docker - 如何使用 docker-compose 动态分配端口?
问题描述
我正在做项目的码头化。我想在 docker-compose 文件中动态分配端口。
我在互联网上进行了搜索,但找不到任何解决方案。欢迎任何建议
services:
db:
image: "mysql:latest"
restart: on-failure
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_DATABASE=
ports:
- 23316:3305
不应将 Docker-compose 端口分配给特定端口。它应该是动态生成的。
解决方案
您可以创建单独.env
的文件来保留您的环境相关变量,并在您的文件中引用这些变量,compose
如下所示:
version: '3'
services:
db:
image: "mysql:latest"
restart: on-failure
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_DATABASE=
ports:
- ${DB_PORT}:3306
开发.env
文件
DB_PORT=3306
生产.env
文件
DB_PORT=23316
将.env
上面的文件复制到您的服务器,并将其放在与您的docker-compose.yml
文件相同的目录中。
当您运行该docker-compose
命令时,它会自动将 compose 文件中的环境变量替换为您在 file.xml 中定义的.env
内容。
假设您已经使用 , 部署了生产.env
文件docker-compose.yml
,那么当您运行命令时
docker-compose up -d
DB_PORT
将替换为23316
.
参考:
推荐阅读
- blazor - 无法使用 Blazor 显示详细的启动错误
- java - 我尝试在java中将字符串转换为日期格式但有一个异常
- c# - 什么是 Slickflow?如何在 Dot Net Core 中使用它?
- c++-cli - 将字典中的所有值转换为 C++/CLI 中的列表
- vue.js - 为什么路由器链接第一次不工作?
- html - CSS 和 HTML 在 iOS 和 MacOS Safari 甚至 Chrome 中都无法正确显示
- flutter - CloudFirestorePlugin.java 使用未经检查或不安全的操作
- r - R - 合并列和重命名值
- node.js - 将数据传递给 emailTemplate ejs 文件的问题
- r - 如何在轴对数转换时使我的 ggplotly 提示显示原始值