Я пытаюсь о соединении MariaDB с питоном использованием Докер-Compose:MariaDB докер контейнер не удается подключиться к серверу MySQL на хосте (111 Connection отказался) с Python
докер-compose.yml
version: '2'
services:
mariadb:
image: bitnami/mariadb
ports:
- "3306:3306"
environment:
MARIADB_DATABASE: 'mary_db'
MARIADB_USER: user2
MARIADB_PASSWORD: 'pass1234'
consumer:
build: ./consumer
links:
- mariadb
consumer.py
import mysql.connector as mariadb1
mariadb_connection = mariadb1.connect(host='mariadb',
port=3306,
user='user2',
password='pass1234',
database='mary_db')
cursor = mariadb_connection.cursor(buffered=True)
try:
cursor.execute('DROP TABLE names')
except:
pass
comm = "CREATE TABLE names(id VARCHAR(20), location VARCHAR(100)," \
"PRIMARY KEY (mac,location)) ENGINE=InnoDB"
cursor.execute(comm)
print 'created'
EntryPoint Dockerfile просто вызывает функцию consumer.py как:
ENTRYPOINT python -u consumer.py
Проблема очень случайным образом (более 90% проб), питон код не может соединиться с базой данных и выводит сообщение об ошибке:
File "consumer.py", line 7, in database='mary_db') File "/usr/local/lib/python2.7/dist-packages/mysql/connector/init.py", line 179, in connect return MySQLConnection(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/mysql/connector/connection.py", line 95, in init self.connect(**kwargs) File "/usr/local/lib/python2.7/dist-packages/mysql/connector/abstracts.py", line 719, in connect self._open_connection() File "/usr/local/lib/python2.7/dist-packages/mysql/connector/connection.py", line 206, in _open_connection self._socket.open_connection() File "/usr/local/lib/python2.7/dist-packages/mysql/connector/network.py", line 475, in open_connection errno=2003, values=(self.get_address(), _strioerror(err))) mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'mariadb:3306' (111 Connection refused)
Любая идея, что происходит?
Возможный дубликат [Невозможно подключиться к серверу базы данных (MySQL Workbench)] (HTTP : //stackoverflow.com/questions/7864276/cannot-connect-to-database-server-mysql-workbench) – Shadow
Поскольку это сообщение об ошибке mysql или mariadb, не имеет значения, получает ли python или приложение gui сообщение об ошибке, курица дублировать. – Shadow
@ Shadow Я не думаю, что это дубликат; Вопрос в Docker, и настройка отличается. – salehinejad