我的docker-compose.yml
一个项目中有一个文件,我在其中链接多个容器以构建一个应用程序。主入口点(即带有 Web 服务器的容器)在主机端口上运行8080
。
现在这个端口被硬编码到docker-compose.yml
文件中。
有没有办法使用运行时参数动态设置这个端口?我在文档中找不到任何关于此的内容,但另一方面,我无法想象这是不可能的。
是吗?
我的docker-compose.yml
一个项目中有一个文件,我在其中链接多个容器以构建一个应用程序。主入口点(即带有 Web 服务器的容器)在主机端口上运行8080
。
现在这个端口被硬编码到docker-compose.yml
文件中。
有没有办法使用运行时参数动态设置这个端口?我在文档中找不到任何关于此的内容,但另一方面,我无法想象这是不可能的。
是吗?
这个问题非常古老,但已经被查看了很多次,所以我将发布到使用环境变量的文档的链接:
如果您想从 composeports
指令动态公开端口,您可以在所述指令中使用环境变量,确保您确实为 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
命令时始终传递该选项。