我的Dockerfile为环境变量设置了一些默认值,然后暴露了两个端口,这些端口应该是提供的环境变量:
FROM python:3.6.5-stretch
[ ... ]
ENV MY_SERVICE_PORT 8080
ENV MY_SERVICE_PORT_RPC 50051
[ ... ]
EXPOSE ${MY_SERVICE_PORT}
EXPOSE ${MY_SERVICE_PORT_RPC}
当容器启动时,我的应用程序可以正确读取环境变量。如果我使用以下命令运行镜像:
docker run -e "MY_SERVICE_PORT=80" -d -t image_tag
然后我使用 docker ps
命令:
0fb14e12d43d image_tag "/bin/sh -c 'python3…" 8080/tcp, 50051/tcp
正如您所看到的,EXPOSE
使用构建时环境变量(默认为 8080 和 50051)。如果我在容器终端中执行 set
命令,我会得到:
MY_SERVICE_PORT=80
MY_SERVICE_PORT_RPC=50051
我该如何确保EXPOSE
仅设置为运行时环境变量?这可能吗?
docker run
命令,并使用相同的环境变量。 - Momo