Mysql - Docker: проблема с подключением - PullRequest
0 голосов
/ 20 марта 2020

My docker -compose.yml выглядит следующим образом:

version: '3.3'

services:

  frontend:
    build: frontend
    container_name: yii-frontend
    ports:
      - 20080:80
    volumes:
      # Re-use local composer cache via host-volume
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      # Mount source-code for development
      - ./:/app
    networks:
      - my-marian-net

  backend:
    build: backend
    container_name: yii-backend
    ports:
      - 21080:80
    volumes:
      # Re-use local composer cache via host-volume
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      # Mount source-code for development
      - ./:/app
    networks:
      - my-marian-net

  db:
    image: mysql:8.0
    container_name: mysql8
    command: --user=root --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=verysecret
      - MYSQL_DATABASE=yii2advanced
      - MYSQL_USER=yii2advanced
      - MYSQL_PASSWORD=secret
    ports:
      - 6033:3306
    networks: 
      - my-marian-net

networks: 
  my-marian-net:
    driver: bridge

Я получаю сообщение об ошибке:

'SQLSTATE [HY000] [2002] php_network_getaddresses: getaddrinfo Не удалось: имя или имя сервера не предоставлено или неизвестно '

Решения, которые я пробовал:

  • Пинг из контейнера бэкэнда и внешнего интерфейса в mysql8: docker exe c -ti yii-frontend ping mysql8 (Работает!)

  • Вручную подключите каждый контейнер к одной и той же сети (my-marian- net) docker network connect my -marian- net mysql8 (одинаково для каждого контейнера)

  • Я подключился к контейнеру mysql и проверил там соединение, все работает.

  • Я подключился из контейнеров к сервису MySQL 188 MySQL, и он работает.

Пока что не удалось подключиться. В моем коде я использую "db" в качестве имени хоста, так как я использую режим моста.

После попытки различных решений я изолировал проблему с подключением извне docker, Есть ли какие-либо предложения?

Я использую macOS Mojave. Docker версия 19.03

1 Ответ

0 голосов
/ 20 марта 2020

Проблема оказалась проще, чем я думал, из-за пределов контейнера «db» сервис не существует, поэтому нет возможности подключиться.

В будущем, когда я буду запускать консольные команды из локальной среды, я изменю хост в подключении к базе данных, чтобы использовать localhost вместо «db», или подключусь к самому контейнеру и запускаю их изнутри.

Спасибо @Smankusors за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...