在运行时为docker-compose.yml设置端口

时间:2015-05-26 04:16:09

标签: docker docker-compose

我的一个项目中有一个docker-compose.yml文件,我链接多个容器来构建一个应用程序。主入口点(即具有Web服务器的容器)在主机端口8080上运行。

现在此端口已硬编码到docker-compose.yml文件中。

有没有办法使用运行时参数动态设置此端口?我在文档中找不到任何相关内容,但另一方面我无法想象这是不可能的。

是吗?

2 个答案:

答案 0 :(得分:0)

这个问题太老了,但是已经被查看了很多次,所以我将发布链接到使用环境变量的文档:

https://docs.docker.com/compose/environment-variables/

答案 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 命令时始终传递该选项。