Docker环境variables在多阶段构build中
给这个.env
文件:
TEST=33333
给这个docker-compose.yml
文件:
service_name: image: test env_file: .env environment: TEST: 22222
给这个Dockerfile
文件:
FROM an_image AS builder FROM another_image ENV TEST 11111 CMD ["/bin/echo $TEST"]
每当我在一个容器中构build并运行这个图像,它就会打印11111
。
如果我从Dockerfile中删除ENV 11111
行,我的TEST
环境variables是空的…
父图像是否接收环境variables而不是子图像?
谢谢!
编辑:
- 尝试
ENV TEST ${TEST}
没有工作($ TEST是空的) - 删除
ENV TEST
没有工作($ TEST是空的)
所以这不是一个多阶段的问题。
看起来ENV
variables只在运行容器时使用( docker-compose up
)。 不在docker-compose build
时( docker-compose build
)。 所以你必须使用arguments
:
.env :
TEST=11111
docker-compose.yaml :
version: '3' services: test: build: context: . args: TEST: ${TEST}
Dockerfile :
FROM nginx:alpine ARG TEST ENV TEST ${TEST} CMD ["sh", "-c", "echo $TEST"]
testing命令 :
docker rmi test_test:latest ; docker-compose build && docker run -it --rm test_test:latest
严重的文件是有点缺乏。
参考: https : //github.com/docker/compose/issues/1837
- 如果设置了variables,如何configurationdocker组合使用给定的子网,或者如果不是,select自己?
- 在AWS Elastic Beanstalk上部署Dockerized Symfony2应用程序
- EmberCLI运行时configuration
- ENV 。编码返回#<Encoding:ASCII-8BIT>在生产时被分配一个Unicodestring
- 将docker-comp的envvariables注入到Angular4应用程序中
- 将环境dockervariables导出到文件
- ARG或ENV,在这种情况下使用哪一个?
- Dockerfile中带有双星号的环境variables
- 将envvariables传递给DOCKER Spring Boot