У меня уже работает контейнер mysql с именем «mysqlDemoStorage», открывающий порт 3306 для 0.0.0.0:3306. У меня также есть приложение flask, которое предоставляет страницу входа и страницу отображения таблиц. Приложение flask довольно хорошо работает на хосте. Страница входа подключается к таблице «user» в контейнере mysql, а страница отображения таблицы подключается к другой таблице, содержащей все данные для отображения. docker -компонентный файл, который я использовал для создания контейнера mysql, выглядит следующим образом:
version: '3'
services:
mysql:
container_name: mysqlDemoStorage
environment:
MYSQL_ROOT_PASSWORD: "demo"
command:
--character-set-server=utf8
ports:
- 3306:3306
image: "docker.io/mysql:latest"
restart: always
Теперь я хочу докеризировать приложение flask, чтобы я мог по-прежнему просматривать приложение с хоста. Подробности о контейнере mysql:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c48955b3589e mysql:latest "docker-entrypoint.s…" 13 days ago Up 49 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysqlDemoStorage
Докер-файл приложения flask, который я написал, выглядит следующим образом:
FROM python:latest
WORKDIR /storage_flask
ADD . /storage_flask
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python","run.py"]
Изображение flask может быть успешно выполнено встроенный, но когда я запускаю образ, мне не удается загрузить страницу. По-моему, причиной проблемы является файл init .py для запуска приложения flask, а именно:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
app = Flask(__name__)
app.config['SECRET_KEY'] = 'aafa4f8047ce31126011638be8530da6'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:demo@localhost:3306/storage'
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = "login"
login_manager.login_message_category = 'info'
from storage_flask import routes
Я думал передать IP-адрес Контейнер mysql для контейнера flask в качестве строки конфигурации для подключения к БД. Но я не уверен, как это сделать. Может ли кто-нибудь помочь решить проблему? Спасибо