Почему docker compose не передает переменную окружения в nodejs приложение? - PullRequest
0 голосов
/ 10 апреля 2020

Я использую docker с AWS ECS и хочу передать переменные env, используя docker, в мое nodejs приложение.

Мое приложение. js просто, оно имеет маршрут, сообщающий мне значение переменной SOME:

 app.get('/test', (req, res) => res.status(200).send(`${process.env.SOME} OK`));

. Таким образом я обновляю службу AWS ECS:

 docker-compose -f .docker/docker-compose.myweb.ecr.yml build www-app
 docker-compose -f .docker/docker-compose.myweb.ecr.yml push www-app
 aws ecs update-service --cluster web --service www --force-new-deployment

Dockerfile:

FROM node:latest

# ENV SOME=3000 <--- THIS IS WORKS, BUT I WANT TO DO IT IN COMPOSE FILE.

WORKDIR /usr/src/app

COPY ./dist/myapp/package.json .

RUN npm install

COPY ./dist/myapp .

EXPOSE 3000

CMD [ "npm", "start" ]

docker -compose.myweb.ecr.yml:

version: '3'

services:
  www-app:
    # env_file: ../.env
    image: 32934544.dkr.ecr.us-east-2.amazonaws.com/www-app:latest
    environment:
      - SOME=6000
    build:
      context: ../
      dockerfile: ./.docker/Dockerfile

Проблема в том, что я получил неопределенный файл process.env.SOME. Как это исправить?

1 Ответ

0 голосов
/ 11 апреля 2020

Вам необходимо использовать «args», как указано здесь :

С [1]

Если ваша служба указывает Опция сборки, переменные, определенные в среде, автоматически не видны во время сборки. Используйте опцию args сборки для определения переменных среды времени сборки.

...