具有多个mysql容器的docker不工作

gcuhipw9  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(430)

码头新手来了。
我试图实现的是用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时,它会显示以下错误:
错误:for consultingdocker\u mysql2\u 1无法启动服务mysql2:驱动程序未能在终结点consultingdocker\u mysql2\u 1上编程外部连接(7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a):绑定0.0.0:3306失败:端口已分配
错误:对于mysql2,无法启动服务mysql2:驱动程序未能在终结点咨询docker\u mysql2\u 1(7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a)上编程外部连接:绑定0.0.0:3306失败:端口已分配错误:启动项目时遇到错误。
请告诉我我错过了什么?

7y4bm7vi

7y4bm7vi1#

港口 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上可用。

7rfyedvj

7rfyedvj2#

“端口”阵列配置反转。如果你写这个:

port:
  - "3306:3307"

它表示“将主机网络上的端口3306绑定到集装箱网络中的端口3307”。
而你想要的恰恰相反。
交换号码就行了

相关问题