Мы с коллегой пытаемся развернуть службу flask и службу mysql с docker роем. У нас есть файл YAML для docker start с именем " flask_stack1.yml ". Содержимое выглядит следующим образом:
version: '3.7'
services:
db:
deploy:
replicas: 3
image: mysql
environment:
MYSQL_ROOT_PASSWORD: "demo"
volumes:
- "./db:/var/lib/mysql"
- "./init:/docker-entrypoint-initdb.d/"
ports:
- "3306:3306"
networks:
- flask_storage_mysql
web:
depends_on:
- db
deploy:
replicas: 1
image: flask_storage2
ports:
- "5000:5000"
networks:
- flask_storage_mysql
volumes:
mysql_data:
networks:
flask_storage_mysql:
driver: overlay
И мы запускаем файл стека с помощью команды
docker stack deploy -c flask_stack1.yml demo
То, что у меня в flask для подключения mysql, равно
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:demo@pdf:3306/storage'
Я думаю, что проблема находится в аргументе выше. Мне нужно дать точное имя хоста, но я не знаю, как это сделать виртуально, потому что когда мы напишем " имя_контейнера: pdf ", вывод будет " установка имени контейнера не поддерживается ».
Обе службы могут работать, но мы просто не можем получить доступ к базе данных через страницу flask. Список услуг выглядит следующим образом:
ID NAME MODE REPLICAS IMAGE PORTS
c52q6ew7wxel demo_mysql replicated 0/1 mysql:latest *:3306->3306/tcp
pmr5npbipwjg demo_web replicated 1/1 flask_storage2:latest *:5000->5000/tcp
А список docker выглядит следующим образом:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
750c03862569 flask_storage2:latest "python run.py" 48 seconds ago Up 46 seconds 5000/tcp demo_web.1.wpr34h2arduf0yveyvt98ajii
f83921a8ecac mysql:latest "docker-entrypoint.s…" 51 seconds ago Up 49 seconds 3306/tcp, 33060/tcp demo_mysql.1.zpalrajlewijbm0j1apufo4tu
de964bec669b 497d471d6c48 "python SWI-main.py" 3 hours ago Up 3 hours k8s_swimain_swimain1-7754b6f4bd-kvmf7_d
Может ли кто-нибудь помочь? Спасибо.