Докер с Multiple Mysql Container не работает

0

Докер новичок здесь.

То, что я пытаюсь достичь, - запустить несколько контейнеров MySQL с компоновкой докеров.

Это мой докер-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 -d, он показывает мне ошибку ниже:

ОШИБКА: for consultingdocker_mysql2_1 Не удается запустить службу mysql2: драйвер не смог выполнить внешнее подключение на конечной точке consultingdocker_mysql2_1 (7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a): Привязка для 0.0.0.0:3306 не удалась: порт уже выделен

ОШИБКА: для mysql2 Не удается запустить службу mysql2: драйвер не смог выполнить внешнее подключение на конечной точке consultingdocker_mysql2_1 (7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a): Привязка для 0.0.0.0:3306 не удалась: порт уже выделен ОШИБКА: Ошибки при запуске проекта.

Пожалуйста, дайте мне знать, что мне здесь не хватает?

Теги:
docker
docker-compose
containers

2 ответа

2
Лучший ответ

Порт 3306 уже используется на хосте контейнером mysql, поэтому вы не можете выделить тот же порт на хосте для контейнера mysql2. Измените 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 на хосте.

0

Конфигурация массива "порт" инвертирована. Если вы напишете это:

port:
  - "3306:3307"

это означает "связывать порт 3306 в сети хоста с портом 3307 в контейнерной сети".

Хотя вы хотите точно противоположное.

Меняйте номера, и они будут работать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню