该应用程序具有以下容器
在开发过程中,会创建许多功能分支以添加新功能。如
我每个运行Docker引擎V.18的功能分支都有一个AWS EC2实例,而docker compose用来构建并运行组成php应用程序的docker堆栈。
为了节省运营成本,一个AWS EC2实例可以同时具有3个功能分支。我当时在想,每个功能分支都应该有一个自定义的docker-compose和特殊的端口映射和docker image标签。
此配置的目标是能够测试3个功能分支并通过不同的端口访问该应用程序,同时节省资金。
我还考虑过通过保留相同端口并使用nginx将流量重定向到不同的docker网络端口来使用 docker network 。
您有什么建议?
最佳答案
在这种情况下,我能想到的一种简单的方法是将.env
文件用于docker-compose。
docker-compose.yaml 文件将如下所示
...
ports:
- ${NGINX_PORT}:80
...
ports:
- ${API_PORT}:80
每个堆栈的 .env 文件将如下所示
NGINX_PORT=30000
API_PORT=30001
和
NGINX_PORT=30100
API_PORT=30101
用于不同的项目。
注意:
.env
必须与docker-compose.yaml
位于同一文件夹中。 .env
文件内的所有端口都不会相互冲突。您可以使用某种约定,例如为feature1之类的功能添加前缀,其端口将以301
开头,即301xx
。 docker-compose.yaml
可以像您想要的一样通用。 关于amazon-web-services - docker 中的同一应用程序构成了映射AWS EC2实例上不同端口的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59961483/