关于docker-compose容器间连接URL格式的技术咨询
Docker Compose 数据库连接URL格式说明
你的理解有偏差,正确的格式并不是image_name://service_name:container_port,拆解下正确的结构细节:
- 开头的
postgres://是数据库的标准协议名,和镜像名称无关。不同数据库对应不同的协议前缀:- PostgreSQL:
postgres:// - MySQL:
mysql:// - MongoDB:
mongodb://
哪怕你使用了自定义构建的镜像,协议部分也必须对应数据库的标准协议,而非镜像名。
- PostgreSQL:
- 中间的
db是Docker Compose配置文件中services节点下定义的服务名称,这部分你的理解是对的——Compose会自动创建内部DNS,通过服务名就能直接解析到对应容器的IP地址。 - 最后的
5432是容器内部的服务监听端口,也就是数据库本身在容器里运行时使用的端口,和docker-compose.yml里ports字段映射的宿主机端口没有关系。
举个实际例子:如果你的Compose里定义了一个叫mysql-service的MySQL服务,那正确的连接URL应该是mysql://mysql-service:3306,而非用镜像名mysql:8.0开头。
内容的提问来源于stack exchange,提问作者Eduardo Romero
相关产品推荐
相关产品推荐

