我有一个简单的案例,我尝试从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-compose
和Dockerfile
之间传递参数。任何建议将不胜感激:)
答案 0 :(得分:1)
我认为问题在于,您正在尝试传递容器运行时需要的enivorment变量,但是(通过args
和ARG
传递变量的方式仅仅是在Docker Compose documentation中所述的构建过程中可用。
如果我没记错的话(我还没有找到说明该错误的文档,所以我很可能是错的),但是我认为您已经在Dockerfile中正确设置了ENV
变量,但是被它覆盖了Docker Compose环境变量。
我还没有测试过,但是,如果这是问题所在,应该通过在docker-compose中将变量添加到environment
中来工作,就像这样:
environment:
- CHOKIDAR_USEPOLLING=true
- REACT_APP_API_URL="aabbcc"