目的:使用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 python manage.py db migrate
$ docker exec python manage.py db upgrade

此时该项目就可以正常与docker中的mysql相连了

Refrence:

本文地址: http://Humbertzhang.github.io/2017/07/31/docker-compose部署MysqlInDocker+Flask/