Docker从docker-compose.yml设置ENV变量

时间:2020-10-12 14:34:35

标签: reactjs docker docker-compose environment-variables

我有一个简单的案例,我尝试从docker-compose传递变量(最终是ENV变量)。现在看来似乎无法正常工作,我也不知道错误在哪里。

docker-compose.yml

version: "3"
services:
  sprintbotmanager:
    container_name: sprintbotmanager
    image: sprintbotmanager:latest
    build:
      context: .
      args:
        - REACT_APP_API_URL="aabbcc"
    volumes:
      - "/node_modules"
    ports:
      - "80:3000"
    depends_on:
      - sprintbotserver
    environment:
      - CHOKIDAR_USEPOLLING=true
    stdin_open: true

Dockerfile

FROM node:10

MAINTAINER Kuba Wasilewski <jakub.wasilewski@sprint.pl>
 
WORKDIR /usr/src/app
 
COPY package*.json ./
 
RUN npm install
 
ARG REACT_APP_API_URL

ENV REACT_APP_API_URL ${REACT_APP_API_URL}

COPY . .
 
EXPOSE 3000

CMD [ "npm", "start" ]

我似乎无法在docker-composeDockerfile之间传递参数。任何建议将不胜感激:)

1 个答案:

答案 0 :(得分:1)

我认为问题在于,您正在尝试传递容器运行时需要的enivorment变量,但是(通过argsARG传递变量的方式仅仅是在Docker Compose documentation中所述的构建过程中可用。

如果我没记错的话(我还没有找到说明该错误的文档,所以我很可能是错的),但是我认为您已经在Dockerfile中正确设置了ENV变量,但是被它覆盖了Docker Compose环境变量。

我还没有测试过,但是,如果这是问题所在,应该通过在docker-compose中将变量添加到environment中来工作,就像这样:

environment:
- CHOKIDAR_USEPOLLING=true
- REACT_APP_API_URL="aabbcc"