我有一个dockerfile,其中包含以下图片。
FROM python:3.4-alpine
RUN apt-get update && apt-get install -y
ENV TINI_VERSION v0.15.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
COPY ./entrypoint.sh /
ENTRYPOINT ["/tini", "--", "/entrypoint.sh"]
entrypoint.sh
有一些运行的bash命令,并且构建了图像。
现在,我正在使用上面的图像使用docker-compose文件生成多个容器。
services:
web:
image: test/tutorials:latest
ports:
- "8000:8000"
redis:
image: test/tutorials:latest
每个web和redis容器都需要具有需要在其中设置的公共环境变量。我不想在dockerfile中设置它们,因为图像将被构建一次。
我想在构建堆栈时设置它们。如何共享2个容器之间的公共环境变量?有没有办法覆盖entrypoint.sh
文件?
答案 0 :(得分:0)
请参阅此处的文档:https://docs.docker.com/compose/environment-variables/
一种可能的解决方案是从主机环境传递env var:
services:
web:
image: test/tutorials:latest
ports:
- "8000:8000"
environment:
- TINI_VERSION
redis:
image: test/tutorials:latest
environment:
- TINI_VERSION
然后你在使用docker-compose run
之前在主机env中设置TINI_VERSION。还可以选择在.env
文件中设置默认值。