####
第一步:
首先准备一个简单的flask项目,
只需要一个main函数就可以了,随便写一个接口,
from flask import Flask app = Flask(__name__) @app.route('/') def alldata(): return '<h1>Hello World!</h1>' # if __name__ == "__main__": """初始化,debug=True""" app.run(host='0.0.0.0', port=9876, debug=True)
###
第二步:
生成requirement.txt
Flask网页程序中需要依赖一些Python库,为了方便在docker上进行安装,所以将需要的库整合到requirement.txt中。
在终端中进入到项目目录下,执行下面的目录,生成requirement.txt
pip freeze > requirements.txt,里面只有一个flask,
Flask==2.0.1
###
第三步:
创建Dockerfile
什么是Dockerfile?
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),有了 Dockerfile,就可以创建我们所需要的镜像
FROM python:3.8-alpine3.13 WORKDIR /app ADD . /app RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple EXPOSE 9876 CMD ["python", "app.py"]
FROM python:3.8-alpine3.13
FROM命令指定将在其上构建新镜像的基础容器镜像。 这样就可以从一个现有的镜像开始,添加或改变一些东西,并最终得到一个派生的镜像。 镜像由名称和标签来标记,之间用冒号分隔。 该标签用作版本控制机制,允许容器镜像提供多个版本。 现在选择的镜像的名称是python,它是Python的官方Docker镜像。 该镜像的标签允许指定解释器版本和基础操作系统。 3.6-alpine标签是安装在Alpine Linux上的Python 3.6解释器。 由于其体积小,Alpine Linux发行版比起更常见的发行版(例如Ubuntu)使用更广泛。 可以在Python镜像库中查看可用的Python镜像标签。
Python镜像库:https://hub.docker.com/r/library/python/tags/
这里WORKDIR为容器内设置的工作目录,RUN CMD ENTRYPOINT都是在这个目录下进行的
ADD . /app将Dockerfile所在目录下的所有文件拷贝到容器内的/app目录下(也可用COPY)
RUN命令执行的为安装项目依赖
EXPOSE将容器内的端口暴露出去我
CMD为容器启动时容器内执行的操作(目前还没分清与ENTRYPOINT使用哪个更好)
####
第四步,构建,
上面准备好docker构建的文件后
开始构建docker image
首先切换到Dockerfile所在目录
执行
(venv) passwordis123@ubuntu:~/PycharmProjects/tests/test_flask/test_flask_docker$ docker build -f Dockerfile -t flask_docker_test .
####
第五步运行,
待镜像构建完成后,启动项目镜像test_flask_docker
执行
(venv) passwordis123@ubuntu:~/PycharmProjects/tests/test_flask/test_flask_docker$ docker run -p 9876:9876 flask_docker_test
提醒:
1、这里的172.17.0.2是docker的这个容器ip(实际上就是咱们本机/服务器的内网IP)
2、建议在flask程序中的host设置为0.0.0.0,不然可能出现无法访问的情况
则项目通过docker启动了
在浏览器输入http://localhost:9876/
#####
把这个容器导出,然后放到centos上面去,
第一步,导出容器,
docker save -o flask_docker_test.tar flask_docker_test
第二步,把这个tar上传到centos,
使用rz命令,
第三步,先在centos安装一下docker,
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
第四步,在centos导出容器,
docker load < flask_docker_test.tar
第五步,运行容器,
docker run -p 9876:9876 test_flask_docker:v1
成功运行这个docker,所以是不是非常的方便啊,哈哈哈哈哈,
#####