Я нахожусь в процессе, чтобы докеризовать мое приложение фляги.Я получил свой Dockerfile, теперь мне просто нужно подключить базу данных MySQL.В колбе я делал это следующим образом в моем __init.py___
:
# SQL configs
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
Это работает на моем веб-сервере, есть ли способ добиться того же с докером?
Я получаюследующая ошибка при запуске docker-compose up
app_1_fb82702505ba | [2018-11-08 04:02:27 +0000] [10] [ERROR] Exception in worker process
app_1_fb82702505ba | Traceback (most recent call last):
app_1_fb82702505ba | File "/home/supv/venv/lib/python3.5/site-packages/pymysql/connections.py", line 582, in connect
app_1_fb82702505ba | **kwargs)
app_1_fb82702505ba | File "/usr/local/lib/python3.5/socket.py", line 712, in create_connection
app_1_fb82702505ba | raise err
app_1_fb82702505ba | File "/usr/local/lib/python3.5/socket.py", line 703, in create_connection
app_1_fb82702505ba | sock.connect(sa)
app_1_fb82702505ba | OSError: [Errno 99] Address not available
Вот мой docker-compose.yml:
version: "2"
services:
app:
build: ./
links:
- db
ports:
- "5000:5000"
db:
image: mysql:5.7
ports:
- "32000:3306"
environment:
MYSQL_ROOT_PASSWORD: pass
volumes:
- ./db:/docker-entrypoint-initdb.d/:ro
Кроме того, я могу вручную подключиться к mysql через командную строку:
# mysql --host=127.0.0.1 --port=32000 -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.24 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>