Docker mysql не может подключиться к контейнеру

У меня есть файл docker-compose для создания образа mysql и выставления порта на 3306, но когда я пытаюсь установить CMS, он выдает ошибку, что не может подключиться к базе данных. Я пытаюсь просканировать порт 3306, и он показывает мне, что он открыт, поэтому mysql работает.

Почему два док-контейнера не видят друг друга?

Вот мой файл для создания докеров:

phpfpm:
  restart: always
  extends:
    file: php-fpm-5.6.yml
    service: phpfpm
  links:
    - db:db

nginx:
  restart: always
  image: nginx
  ports:
    - "8000:80"
  links:
    - phpfpm:phpfpm
  volumes:
    - ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf
    - ./app:/var/www/html
    - ./log/nginx:/var/log/nginx

db:
  restart: always
  image: mysql
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: 123456
    MYSQL_USER: user
    MYSQL_PASSWORD: password
    MYSQL_DATABASE: database

person ZeroByte    schedule 02.04.2016    source источник
comment
я пробую на сервере и с фиксированным ip, и это хорошо. Но что не так с localhost/127.0.0.1?   -  person ZeroByte    schedule 03.04.2016


Ответы (1)


Чтобы подключиться к базе данных, используйте ссылку/псевдоним, который вы указали в качестве имени хоста. Итак, ваша CMS может подключиться к MySQL, используя db в качестве имени хоста и порт 3306.

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

Обратите внимание, что вам не нужно опубликовать ("3306":"3306") порты MySQL, если вы подключаетесь к базе данных только из связанных контейнеров. Публикация портов предоставляет MySQL на общедоступном сетевом интерфейсе, которым может быть «Интернет».

person thaJeztah    schedule 02.04.2016
comment
Я исправил проблему с заменой localhost на db. Спасибо за ваше время и всю вашу помощь :) - person ZeroByte; 04.04.2016
comment
спасибо за примечание о том, что не нужно публиковать порт, это вызывало у меня проблемы с подключением. - person mfink; 10.07.2018