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

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

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

Вот мой файл docker-compose:

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

8

Решение

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

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

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

18

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector