Проблемы с подключением приложения Symfony2 к контейнеру базы данных в Docker

У меня есть приложение Symfony2 в проекте docker, использующее docker-compose.

Я получаю следующую ошибку при попытке запустить обновление схемы для моей базы данных.

[Doctrine\DBAL\Exception\DriverException] An exception occured in driver: SQLSTATE[HY000] [1130] Host '172.17.0.129' is not allowed to connect to this MySQL server

Мой файл docker-compose.yml:

api:
build: images/nginx
ports:
- "80:80"- "9000:9000"links:
- mysql:mysql
- memcached:memcached
- redis:redis
- elasticsearch:elasticsearch
- rabbitmq:rabbitmq
volumes:
- www/api:/var/www
- sites/api:/etc/nginx/sites-enabled

socketserver:
build: images/socketserver
links:
- rabbitmq:rabbitmq
ports:
- "5000:5000"volumes:
- www/socketserver:/var/www
- sites/socketserver:/etc/nginx/sites-enabled

adminpanel:
build: images/adminpanel
ports:
- "8001:8001"volumes:
- www/adminpanel:/var/www
- sites/adminpanel:/etc/nginx/sites-enabled

mysql:
image: mysql:latest
expose:
- "3306"ports:
- "3307:3306"environment:
MYSQL_DATABASE: api
MYSQL_USER: root
MYSQL_PASSWORD: [REDACTED]
MYSQL_ROOT_PASSWORD: [REDACTED]

memcached:
image: tutum/memcached
ports:
- "11211:11211"dns: 3.3.3.3
environment:
MEMCACHED_PASS: [REDACTED]

redis:
image: tutum/redis
ports:
- "6379:6379"dns: 4.4.4.4
environment:
REDIS_PASS: [REDACTED]

elasticsearch:
image: tutum/elasticsearch
ports:
- "9200:9200"dns: 5.5.5.5
environment:
ELASTICSEARCH_USER:[REDACTED]
ELASTICSEARCH_PASS:[REDACTED]

rabbitmq:
image: dockerfile/rabbitmq
dns: 6.6.6.6
ports:
- "5672:5672"- "15672:15672"

Мой Symfony2 parameters.yml:

  parameters:
secret:           [REDACTED]
locale:            en
mailer_transport:  smtp
mailer_host:       [REDACTED]
mailer_user:      test@theladbible.com
mailer_password:  [REDACTED]
database_driver:   pdo_mysql
database_host:     mysql
database_port:     3306
database_name:     api
database_user:     root
database_password: [REDACTED]
jms_serializer.cache_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy

Я пробовал несколько разных способов. Я не могу подключиться через localhost или 127.0.0.1. Установка mysql, казалось, ссылалась на контейнеры базы данных с правильным адресом базы данных, но затем я все еще получаю эту ошибку, показанную выше.

Я новичок в Docker, поэтому я, вероятно, неправильно понял некоторые из основных принципов, извинения, если это так.

Я подозреваю, что мне нужно добавить правильные разрешения пользователя в возможно? Я не смог подключиться к контейнеру базы данных напрямую, чтобы сделать это либо.

Заранее спасибо!

1

Решение

Решил эту проблему с помощью https://registry.hub.docker.com/u/drakedroid/mysql-with-data/ который расширяет образ докера mysql по умолчанию, но автоматически настраивает все, чтобы вы могли получить к нему доступ из других контейнеров.

В вашем settings.yml установите для вашего хоста то же имя, что и для вашего имени в MySQL Docker.

Так что в моем случае, мой mysql docker-compose config:

mysql:
image: drakedroid/mysql-with-data
expose:
- "3306"ports:
- "3306:3306"environment:
MYSQL_DATABASE: api_master
MYSQL_USER: root
MYSQL_PASSWORD: [REDACTED]
MYSQL_ROOT_PASSWORD: [REDACTED]

По моим параметрам.

database_host:     mysql

Таким образом, Docker автоматически вычислит все это за вас.

4

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

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

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