Я пытаюсь запустить приложение как образ Docker. Ему необходим доступ к базе данных на сервере. Я пытаюсь запустить все на удаленном сервере, и это сервер Linux. Я использую docker-compose.
Docker-compose:
services:
mysql_service:
image: mysql
container_name: mysql_server
restart: always
ports:
- "3307:3306"
volumes:
- mysql_data:/var/lib/mysql
tests:
build:
dockerfile: dockerfile
container_name: tests
volumes:
- .:/run_docker_app
depends_on:
- ollama
- mysql_service
command: ["pytest", "--disable-warnings", "-rP", "tests"]
Я создаю приложение и запускаю тесты, используя следующий файл рабочего процесса GitHub. Никаких других конфигураций, которые я добавляю в контейнеры Docker, я не добавляю.
docker compose build --no-cache
docker compose up -d mysql_service
docker compose run --rm tests
docker compose logs tests
Файл, который используют тесты, содержит следующий код для создания базы данных и подключения к ней.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session, declarative_base
from sqlalchemy import Column, Integer, String, DateTime
import datetime
DATABASE_URI = ("mysql+pymysql://pyuser:pss0@mysql_service:3306/db")
engine = create_engine(DATABASE_URI, pool_pre_ping=True)
db_session = scoped_session(sessionmaker(bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
Как подключиться к этому сервису, работающему в той же контейнерной сети? Моя проблема не в том, что Docker не может запустить службу на порту. Проблема в том, что к контейнеру MySQL невозможно получить доступ через SQLAlchemy в той же сети.
Я изменяю базу данных как пользователь, имеющий все привилегии для базы данных. Я подключаю этого пользователя к базе данных с помощью механизма SQLAlchemy. Для этого используется следующий URI. Это не подключается к образу докера на сервере.
("mysql+pymysql://pyuser:pss@mysql_server:3306/db")
Ошибка
E sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'mysql_service' (\[Errno -3\] Temporary failure in name resolution)")
E (Background on this error at:
Я пробовал перезапустить Docker и следил за исправлениями подобных проблем, но не смог решить эту проблему.
mysql conf. выглядит следующим образом:
#
# The MySQL database server configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/serve ... ables.html
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld]
#
# * Basic Settings
#
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en ... var_tmpdir
# tmpdir = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 16M
# max_allowed_packet = 64M
# thread_stack = 256K
# thread_cache_size = -1
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
# max_connections = 151
# table_open_cache = 4000
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
#
# Log all queries
# Be aware that this log type is a performance killer.
# general_log_file = /var/log/mysql/query.log
# general_log = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
# slow_query_log = 1
# slow_query_log_file = /var/log/mysql/mysql-slow.log
# long_query_time = 2
# log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
# server-id = 1
# log_bin = /var/log/mysql/mysql-bin.log
# binlog_expire_logs_seconds = 2592000
max_binlog_size = 100M
# binlog_do_db = include_database_name
# binlog_ignore_db = include_database_name
Подробнее здесь: https://stackoverflow.com/questions/798 ... ication-an
Как подключиться к базе данных MySQL с помощью SQLAlchemy при запуске приложения и MySQL, работающего как контейнер Dock ⇐ MySql
Форум по Mysql
1768258329
Anonymous
Я пытаюсь запустить приложение как образ Docker. Ему необходим доступ к базе данных на сервере. Я пытаюсь запустить все на удаленном сервере, и это сервер Linux. Я использую docker-compose.
Docker-compose:
services:
mysql_service:
image: mysql
container_name: mysql_server
restart: always
ports:
- "3307:3306"
volumes:
- mysql_data:/var/lib/mysql
tests:
build:
dockerfile: dockerfile
container_name: tests
volumes:
- .:/run_docker_app
depends_on:
- ollama
- mysql_service
command: ["pytest", "--disable-warnings", "-rP", "tests"]
Я создаю приложение и запускаю тесты, используя следующий файл рабочего процесса GitHub. Никаких других конфигураций, которые я добавляю в контейнеры Docker, я не добавляю.
docker compose build --no-cache
docker compose up -d mysql_service
docker compose run --rm tests
docker compose logs tests
Файл, который используют тесты, содержит следующий код для создания базы данных и подключения к ней.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session, declarative_base
from sqlalchemy import Column, Integer, String, DateTime
import datetime
DATABASE_URI = ("mysql+pymysql://pyuser:pss0@mysql_service:3306/db")
engine = create_engine(DATABASE_URI, pool_pre_ping=True)
db_session = scoped_session(sessionmaker(bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
Как подключиться к этому сервису, работающему в той же контейнерной сети? Моя проблема не в том, что Docker не может запустить службу на порту. Проблема в том, что к контейнеру MySQL невозможно получить доступ через SQLAlchemy в той же сети.
Я изменяю базу данных как пользователь, имеющий все привилегии для базы данных. Я подключаю этого пользователя к базе данных с помощью механизма SQLAlchemy. Для этого используется следующий URI. Это не подключается к образу докера на сервере.
("mysql+pymysql://pyuser:pss@mysql_server:3306/db")
Ошибка
E sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'mysql_service' (\[Errno -3\] Temporary failure in name resolution)")
E (Background on this error at:
Я пробовал перезапустить Docker и следил за исправлениями подобных проблем, но не смог решить эту проблему.
mysql conf. выглядит следующим образом:
#
# The MySQL database server configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld]
#
# * Basic Settings
#
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 16M
# max_allowed_packet = 64M
# thread_stack = 256K
# thread_cache_size = -1
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
# max_connections = 151
# table_open_cache = 4000
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
#
# Log all queries
# Be aware that this log type is a performance killer.
# general_log_file = /var/log/mysql/query.log
# general_log = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
# slow_query_log = 1
# slow_query_log_file = /var/log/mysql/mysql-slow.log
# long_query_time = 2
# log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
# server-id = 1
# log_bin = /var/log/mysql/mysql-bin.log
# binlog_expire_logs_seconds = 2592000
max_binlog_size = 100M
# binlog_do_db = include_database_name
# binlog_ignore_db = include_database_name
Подробнее здесь: [url]https://stackoverflow.com/questions/79846734/how-to-connect-to-mysql-database-with-sqlalchemy-when-running-the-application-an[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия