Я использую репозиторий AWS ECS для образов докера.
Мой docker-compose.yml
файл выглядит так:
version: "3"
services:
my-front-end:
image: myFrontEndImage:myTag
links:
- my-back-end
ports:
- "8080:8080"
logging:
driver: 'json-file'
options:
max-size: "50m"
my-back-end:
image: myBackEndImage:myTag
ports:
- "3000:3000"
logging:
driver: 'json-file'
options:
max-size: "50m"
И что мне нужно, чтобы можно было передать переменную окружения из файла docker-compose в мой образ docker.
Я пытался добавить строки для среды (следуя примеру ).
version: "3"
services:
my-front-end:
image: myFrontEndImage:myTag
links:
- my-back-end
environment:
- BACKEND_SERVER_PORT=3001
ports:
- "8080:8080"
logging:
driver: 'json-file'
options:
max-size: "50m"
my-back-end:
image: myBackEndImage:myTag
ports:
- "3000:3000"
logging:
driver: 'json-file'
options:
max-size: "50m"
А затем в моем проекте (который является проектом VueJS) я пытаюсь получить к нему доступ process.env.BACKEND_SERVER_PORT
. Но я не вижу своего значения и при попытке console.log(process.env);
вижу, что оно имеет только значение {NODE_ENV: "development"}
.
Итак, мой вопрос здесь, как передать переменную env из docker-compose в мой образ docker, чтобы я мог использовать ее внутри моего проекта?
Все в проекте работает нормально, я работаю над этим проектом долгое время, и файл docker-compose работает, просто сейчас, когда мне нужно добавить эту переменную среды, я не могу заставить ее работать.
РЕДАКТИРОВАТЬ: добавив еще несколько файлов, за запрос в комментарии.
.Dockerfile
для my-front-end
выглядит так:
FROM node:8.11.1
WORKDIR /app
COPY package*.json ./
RUN npm i npm@latest -g && \
npm install
COPY . .
CMD ["npm", "start"]
Как уже упоминалось, это VueJS
приложение, а вот часть package.json
, которая может вас заинтересовать:
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js"
},
В то время как .Dockerfile
для my-back-end
выглядит так:
FROM node:8.11.1
WORKDIR /app/server
COPY package*.json ./
RUN npm i npm@latest -g && \
npm install
COPY . .
CMD ["npm", "start"]
Мой бэкэнд на самом деле является приложением express.js
, которое прослушивает отдельный порт, и приложение помещается в папку server
под корнем проекта.
Вот часть package.json
, которая может вас заинтересовать:
"scripts": {
"start": "nodemon src/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},