Docker新手在这里。
我想要实现的是使用docker compose运行多个MySQL容器。
这是我的docker-compose.yml:
version: '2'
services:
mysql:
build: ./docker-configs/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: admin
volumes:
- ./data/mysql:/var/lib/mysql
- ./data/init.d:/docker-entrypoint-initdb.d
mysql2:
build: ./docker-configs/mysql2
ports:
- "3306:3307"
environment:
MYSQL_ROOT_PASSWORD: admin
volumes:
- ./data/mysql2:/var/lib/mysql2
- ./data/init.d:/docker-entrypoint-initdb.d
nginx-proxy:
image: jwilder/nginx-proxy
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
- ./docker-configs/nginx-proxy/certs:/etc/nginx/certs
ports:
- '80:80'
- '443:443'
但是当我运行docker-compose up -d时,它会向我显示以下错误:
错误:对于consultingdocker_mysql2_1无法启动服务mysql2: 驱动程序在端点上编程外部连接失败 consultingdocker_mysql2_1 (7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a): 绑定0.0.0.0:3306失败:端口已分配
错误:对于mysql2无法启动服务mysql2:驱动程序失败 编程端点上的外部连接 consultingdocker_mysql2_1 (7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a): 绑定0.0.0.0:3306失败:端口已经分配错误: 在启动项目时遇到错误。
请让我知道我在这里失踪了什么?
答案 0 :(得分:3)
" port"数组配置是反转的。 如果你这样写:
port:
- "3306:3307"
它意味着"将主机网络上的端口3306绑定到容器网络中的端口3307"。
虽然你想要完全相反。
交换数字并且它可以正常工作
答案 1 :(得分:2)
端口3306
已由容器mysql
在主机上使用,因此您无法在mysql2
容器的主机上分配相同的端口。将您的mysql2
服务配置更改为以下内容,它应该有效 -
mysql2:
build: ./docker-configs/mysql2
ports:
- "3307:3307"
environment:
MYSQL_ROOT_PASSWORD: admin
volumes:
- ./data/mysql2:/var/lib/mysql2
- ./data/init.d:/docker-entrypoint-initdb.d
现在,您的mysql2
服务将在主机上的端口3307上提供。