reactjs - Docker 从 docker-compose.yml 设置一个 ENV 变量
问题描述
我有一个简单的案例,我尝试从我的docker-compose
. 它现在似乎不起作用,我不知道错误在哪里。
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" ]
我似乎无法在 thedocker-compose
和 my之间传递我的参数Dockerfile
。任何建议将不胜感激:)
解决方案
我认为问题在于您试图传递容器运行时需要的 enivorment 变量,但是传递变量的方式(通过args
和ARG
)它仅在构建过程中可用,如Docker Compose 文档中所述。
如果我没记错的话(我没有找到说明这一点的文档,所以我也可能错了),但我认为你ENV
在 Dockerfile 中正确设置了变量,但它被 Docker Compose 环境变量覆盖。
我没有对此进行测试,但如果这是问题所在,只需将变量添加到environment
docker-compose 中即可,如下所示:
environment:
- CHOKIDAR_USEPOLLING=true
- REACT_APP_API_URL="aabbcc"
推荐阅读
- amazon-web-services - 无法从 Windows 10 SSH 到 Amazon Linux 实例。我将 EC2Tutorial.pem 保存在我的桌面上。请建议
- javascript - 如何使用创建嵌套的子 html和 HTML 中的 JavaScript 或 jQuery?
- firebase - 在 Cloud Firestore 中的顶级集合和子集合之间有一个桥接文档有什么真正的缺点吗?
- python - Pandas python相关问题而不是排序
- node-red - 如何在linux上设置Node Red log文件?
- r - 更新存储在变量中的数据框名称的函数
- bash - 如果我必须通过 bash 脚本运行应用程序,如何在控制台上打印 Scala 变量(在 scala 对象中)?
- java - WAS Liberty:ClassNotFoundException:[Ljava.lang.String
- r - 有没有办法在 Rworldmap 上添加标签或城市名称?
- python - 为什么 qt 中的“构建”选项卡对我无效?