docker部署一个最简单的flask项目

  • Post author:
  • Post category:其他



一、需要一个flask项目

这里采用pycharm新增一个最小的flask项目

启动项目的入口是app.py

启动后,访问控制台地址即可


注意:当项目中的依赖包太多的时候,需要批量安装依赖,我们可以一次性把依赖的包名导出到一个txt

1、使用自带的方法(不建议,虚拟环境会导出全部的依赖)

在当前项目根目录下执行命令pip freeze > requirements.txt

即可生成一个文件requirements,迁移环境可以通过pip install -r requirements.txt安装全部的依赖

2、使用pipreqs(只会导出第三方库)

安装一个python三方库,pip install pipreqs

在项目根目录的控制台输入:pipreqs ./ –encoding=utf8

自动在根目录生成一个文件requirements.txt,迁移环境可以通过pip install -r requirements.txt安装全部的依赖


二、安装docker

1、如果安装了宝塔linux面板,直接在应用商店安装即可

安装宝塔:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

安装完成后可以看到username和password ,通过默认的8888端口访问,外网ip是服务器ip

验证方式:打开控制台:docker –version

2、手动安装docker(用的腾讯云服务器)

2.1.卸载旧版本

yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

2.2、yum install -y yum-utils 安装一些工具包,可能使用

2.3、yum install docker-ce docker-ce-cli containerd.io  安装最新的docker社区

2.4、启动docker:systemctl start docker

2.5、验证安装成功:docker –version

2.6、修改下载源为国内源

vim  /etc/docker/daemon.json  打开是个空文件,在里面添加腾讯或者阿里等源(可添加多个),这里用腾讯的源

{


“registry-mirrors” : [

“https://mirror.ccs.tencentyun.com”

]

}

———————————————-

i : 进入编辑状态

esc:退出编辑状态

冒号:输入wq 保存并退出

2.7、重启docker 使配置生效

systemctl daemon-reload

systemctl restart docker.service

2.8、查看配置是否生效

docker info

拉到最后看配置是否是新增的国内源

3、安装镜像和启动项目

3.1、查看全部镜像:docker images

3.2、查看运行中的容器:docker ps

3.3、查看运行过的容器:docker ps -a

3.4、删除镜像:docker rmi 镜像名

3.5、删除容器:docker rm 容器id

3.6、运行一个镜像:docker run 镜像名

3.7、下载一个镜像:

docker pull mysql:5.7

尝试拉取一个镜像,运行一个容器

3.6、运行一个hello word(docker 用于测试的项目)

docker run hello-word  (不存在这个项目,默认会去下载)

删除这个镜像:

先删除容器:docker ps -a  查看容器id

删除成功后,开始flask项目正式配置!

4、flask项目的导入(以宝塔面板为例)

4.1上传flask项目文件

我是上传到根目录,方便找,

4.2、新增镜像文件

进入项目文件夹里面,新增一个文件Dockerfile,docker的默认启动文件

vim Dockerfile

FROM python:3.7   #指定下载python版本

WORKDIR ./flask_demo #工作路径
 
ADD . . #第一个参数“.”代表Dockerfile所在的目录,即python项目d下所有的目录(不包括文件夹名字本身自身)。第二个参数“.”代表镜像的工作目录

RUN pip install -r requirements.txt   #安装依赖文件
EXPOSE 5000  # 将我们这个运行的容器的 5000 端口向外暴漏

CMD ["python", "./app.py"]        #命令行启动项目

在当前目录下创建镜像:

docker build -t flask_demo .

-t 参数指定了最终镜像的名字为demo。注意,会看到 docker build 命令最后有一个 .   标识当前目录

查看是否创建了镜像

docker images

4.3、运行docker容器

将容器内的端口映射到容器外,容器内的端口不映射,当服务器的5000端口被访问的时候,不会去找对应的容器端口

4.4、运行后,通过浏览器访问:ip:5000

 docker run -d -p 8080:5000 flask_demo

停止项目 :

docker stop 容器id

4.5、关于访问不到的问题

检查是否云服务器将5000端口开放了

检查项目配置,从头到尾



版权声明:本文为weixin_44867493原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。