因为学校期末作业的要求,我用flask+mysql 集合到docker中搭建了一个简易网站
中间参考了很多师傅的教程,这里给出详细的搭建步骤。
1.生成requirement.txt
flask网页程序需要依赖一些python库,为了方便在docker上进行安装,所以需要将所需库整合到requirement.txt中。
首先用pycharm打开你的项目在终端输入:pip freeze > requirement.txt
生成的requirement.txt如图
但是其中有很多没有用的库,请大家根据自己的项目自行删改。
; 2.创建Dokcerfile
在项目文件夹的跟路径创建一个Dockerfile文件
dockerfile命令讲解:https://developer.aliyun.com/article/574780
#设置python环境镜像
FROM python:3.9
#代码添加到Chenge文件夹,app不需要新建(docker执行时自建)
ADD ./zlckqa /app
#设置code文件夹是工作目录
WORKDIR /app
安装相应的python库
RUN pip install -r requirement.txt
CMD ["python", "app.py"]
RUN与CMD的区别在于,RUN是在创建镜像的时候执行的,而CMD在这个镜像创建的容器每次启动时都会执行
ADD与COPY的区别在于,ADD可以写成 ADD http://foo.com/bar.go /tmp/main.go 或 ADD /foo.tar.gz /tmp/ 用于下载一个文件到容器中或者将一个压缩文件解压到容器中。
创建好后,按如下方式进行排列
tree 0714/ -L 2
3.创建镜像flask_zlck
在服务器上传好文件后,就可以直接进到文件夹里,输入
docker build -t flask_zlck
这会创建一个名为flask_zlck的镜像
4.拉取并创建mysql镜像
docker pull mysql:5.6
启动mysql5.6镜像:
docker run --name mysql_flask -p 6666:3306 -env MYSQL_ROOT_PASSWORD=xxxxxx -d mysql:5.6
- —d设置detach为true,也就是后台运行(-i指定容器交互)
- -p port 映射端口 宿主机端口:容器端口
- -env/-e environment 设置数据库密码xxx
- —name:给容器起一个别名,可选如果不指定则docker会自动生成不规则的字符串
创建成功后docker ps看一下
连接navicat
5.将flask_zlck与数据库连接并启动
docker run --name flask -p 8081:8081 --link mysql_flask:mysql
注意应用中mysql和redis的host都要相应改变,改成数据库容器在flask容器中的别名
–link 容器名:容器别名 可以实现容器间的通信
如果没有意外的话现在就可以从服务器的8081端口访问到flask应用了
6.数据库中文编码问题
完美安装数据库:https://blog.csdn.net/u011937566/article/details/121111616
简易数据库安装详尽教程:https://blog.csdn.net/Liucheng417/article/details/80082096
https://blog.csdn.net/m0_37639542/article/details/72852875
参考:
https://www.cnblogs.com/luozx207/p/9935252.html
https://mp.weixin.qq.com/s/G0mdguyuNz9kmU_1D6fPxQ
docker入门(廖雪峰):https://www.ruanyifeng.com/blog/2018/02/docker-wordpress-tutorial.html
高版本mysql+flask搭建:https://blog.csdn.net/weixin_28689193/article/details/113293037
https://blog.csdn.net/hunter1000/article/details/122872356
Original: https://blog.csdn.net/weixin_45772001/article/details/127339575
Author: smart青龙
Title: flask+mysql+docker搭建简易网站
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/748981/
转载文章受原作者版权保护。转载请注明原作者出处!