Я пытаюсь получить свой докеризованный скрипт на python для получения данных также из докеризированной mariadb.
Я знаю, что это должно быть возможно с сетями или ссылками. Однако из-за того, что ссылки устарели (согласно документации Docker ), я бы предпочел не использовать ссылки.
docker-compose
:
version: "3.7"
services:
[...]
mariadb:
build: ./db
container_name: maria_db
expose:
- 3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: user
MYSQL_PASSWORD: user
restart: always
networks:
- logrun_to_mariadb
[...]
logrun_engine:
build: ./logrun_engine
container_name: logrun_engine
restart: always
networks:
- logrun_to_mariadb
networks:
logrun_to_mariadb:
external: false
name: logrun_to_mariadb
The *Контейнер 1011 * при запуске выполняет python-скрипт:
import mysql.connector as mariadb
class DBConnector:
def __init__(self, dbname):
self.mariadb_connection = mariadb.connect(host='mariadb', port='3306', user='root', password='root', database=dbname)
self.cursor = self.mariadb_connection.cursor()
def get_Usecases(self):
self.cursor.execute("SELECT * FROM Test")
tests = []
for test in self.cursor:
print(test)
print("Logrun-Engine running...")
test = DBConnector('test_db')
test.get_Usecases()
При каждом запуске docker-compose up -d
в моих журналах logrun_engine появляется сообщение об ошибке:
_mysql_connector.MySQLInterfaceError: Can't connect to MySQL server on 'mariadb' (111)
Когда я запускаюСценарий Python локально и подключиться к локальной mariadb, он работает без проблем, поэтому сценарий должен быть правильным.
Большинство ответов, которые я нашел относительно этого сообщения об ошибке, заключается в том, что люди использовали localhost
или 127.0.0.1
вместо док-контейнера, который у меня уже есть.
Я пробовал с мостовыми сетями, хост-сетями, ссылками и т. д., но, видимо, я еще не нашел правильную вещь.
Есть идеи, каксоединить эти два контейнера?