- 目的:使用Docker部署的mysql来为flask提供数据支持
- Step1
- [拉取docker mysql镜像](#拉取docker-mysql镜像)
- Step2
- [获取docker-mysql的内网地址](#获取docker-mysql的内网地址)
- Step3
- [修改docker-compose.yml](#修改docker-composeyml)
- Step4
- [部署flask与数据库初始化](#部署flask与数据库初始化)
目的:使用Docker部署的mysql来为flask提供数据支持
Step1
拉取docker mysql镜像
docker run --detach --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" mysql
Step2
获取docker-mysql的内网地址
docker inspect test-mysql | grep IPAddress
我得到的IPAddress为172.17.0.20
使用本地的mysql在其中加入新数据库,其中-h 后对应的即为上面的IPAdress ,-P对应mysql的默认端口3306.
mysql -uroot -pmypassword -h 172.17.0.20 -P 3306
在数据库中输入
CREATE DATABASE TEST
加完后,添加config.py中相应的.env文件,
MYSQL_URI=mysql://root:mypassword@mysql:3306/TEST
Step3
修改docker-compose.yml
使用docker ps得到test-mysql的容器ID,根据容器的ID在docker-compose.yml中flask对应的容器中添加
external_links:
- CONTAINER_ID:mysql
Step4
部署flask与数据库初始化
之后使用
docker-compose build
docker-compose up &
来将项目部署起来
之后需要初始化数据库(仅初次部署需要)
在服务器上运行(注意需在manage.py中添加对应命令):
$ docker exec <container id> python manage.py db init
$ docker exec <container id> python manage.py db migrate
$ docker exec <container id> python manage.py db upgrade
$ docker exec <container id> python manage.py insert_roles
$ docker exec <container id> python manage.py add_test_admin
$ docker exec <container id> python manage.py test
迁移数据库后(如果后续部署中修改了数据模型结构)
在服务器上运行:
$ docker exec
$ docker exec
此时该项目就可以正常与docker中的mysql相连了
Refrence:
本文地址: http://Humbertzhang.github.io/2017/07/31/docker-compose部署MysqlInDocker+Flask/