我的一个项目中有一个docker-compose.yml
文件,我链接多个容器来构建一个应用程序。主入口点(即具有Web服务器的容器)在主机端口8080
上运行。
现在此端口已硬编码到docker-compose.yml
文件中。
有没有办法使用运行时参数动态设置此端口?我在文档中找不到任何相关内容,但另一方面我无法想象这是不可能的。
是吗?答案 0 :(得分:0)
这个问题太老了,但是已经被查看了很多次,所以我将发布链接到使用环境变量的文档:
答案 1 :(得分:0)
如果您想从 compose ports
指令动态公开端口,您可以在该指令中使用环境变量,确保您确实为 docker 引擎加载了这些变量,例如:
# docker-compose.yml
version: '3'
services:
abcservice:
ports:
- "${ENV_API_PORT}:3000"
# .env
ENV_API_PORT=8082
要为 docker 引擎加载这些变量,请通过 --env-file
选项传递 .env 文件引用,而不是将它们加载到您的 shell 中:
docker-compose --env-file .env up
因此请确保在调用 docker-compose
命令时始终传递该选项。