在docker中部署简单的flask项目

0、先安装好docker,可以参考https://cloud.tencent.com/developer/article/1944114

1、新建一个python 项目,命名为flask_docker

2、在根目录下新建app.py文件

文件名:app.py


from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "Hello Docker Flask!"
if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=True)

安装flask模块,可以用以下命令安装,速度比较快

pip3 install flask -i https://pypi.tuna.tsinghua.edu.cn/simple/

然后在终端执行

pip3 freeze > requirements.txt

此时在根目录下会生成requirements.txt文件,里面是项目的各种依赖模块

3、在根目录下创建Dockerfile描述文件

Dockerfile是一个放置在项目根目录下的描述文件,其中包含了一条条指令,有了这个文件,就可以创建出我们所需要的镜像。
文件名:Dockfile

FROM python
WORKDIR /flask_demo

#把requirements.txt文件放到和Dockerfile相同的目录。
#在Dockerfile中使用COPY命令,把requirements.txt文件复制到容器内部
#安装requirements.txt
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
COPY . /flask_demo

CMD ["python3","app.py"]

4、项目目录如下:

在这里插入图片描述

5、终端执行命令,创建镜像

docker build -f ./Dockerfile -t flask_demo_ct:1.0 .

注意1.0的后面有个空格,还有个点
参数说明:
-f : 指定要使用的Dockerfile路径
-t :指定要创建的目标镜像名,1.0为指定版本号,可以不写
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

6、终端执行命令,查看创建的镜像

docker images

可以看到刚才新建的镜像flask_demo_ct

(venv) chenhaibing@chenhaibingdeMacBook-Pro flask_docker % docker images
REPOSITORY                       TAG       IMAGE ID       CREATED         SIZE
flask_demo_ct                    1.0       570e04d2f13f   2 hours ago     936MB

7、基于创建的镜像运行一个容器

docker run -d --name flask_docker_web -p 5000:5000 flask_demo_ct:1.0

参数说明:
-d :后台运行
–name : 指定容器的名称,这里为flask_docker_web
-p: 映射端口号,【本机端口号:容器端口号】 将本机的端口号5000映射到容器的5000

执行命令,可以查看容器相关信息

docker ps

在这里插入图片描述

8、打开网页,查看结果

打开浏览器,输入http://localhost:5000/

在这里插入图片描述

9、挂载目录,可以更好地对代码进行调试

通过步骤7的命令运行的容器存在一个问题,当修改app.py中的内容时(修改项目目录下的任何文件都可),在浏览器刷新页面,显示的内容不会更新,为了更好的调试,可以用以下命令启动容器。
容器的名字我改成了flask_docker_web2,相当于运行了一个新的容器,否则会提示容器已经存在

docker run -d --name flask_docker_web2 -v /Users/chenhaibing/code/pythonProject/pythonProject/flask_docker:/flask_demo -p 5000:5000 flask_demo_ct:1.0

可以看到多了-v的参数,这里是把主机目录下挂载到了容器对应的目录。

有可能会遇到报错
:docker: Error response from daemon: Mounts denied:
The path xxx is not shared from OS X and is not known to Docker.

解决方法:
打开桌面应用Docker
在这里插入图片描述

再次执行运行容器的命令,如果提示NAME已经存在,删掉原来的或者再换个新名称就行。
运行新的容器后,每次修改项目目录下的文件,到浏览器刷新页面时,都会更新为新的内容。

猜你喜欢

转载自blog.csdn.net/qq_38122800/article/details/128486961