社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

5 分钟,教你用 Docker 部署一个 Python 应用!

Python绿色通道 • 3 年前 • 597 次点击  
来自公众号:AirPython



下面是正文内容:


在使用传统物理机或云服务器上部署项目都会存在一些痛点

比如:项目部署速度慢、资源浪费、迁移难且扩展低

而使用 Docker 部署项目的优势包含:

  • 高效利用系统资源

  • 服务启动更快

  • 环境一致,迁移更加方便

本篇文章将介绍 Docker 部署一个 Python 项目的常规流程

1. Dockerfile 描述文件

Dockerfile 是一个放置在项目根目录下的描述文件,可以利用 Docker 命令基于该文件构建一个镜像

常用的指令包含:

  • FROM

    用于定义基础镜像

  • MAINTAINER

    指定维护者信息,可以省略不写

  • RUN

    和「 安装命令 」连接在一起,可用于安装工具依赖包

  • ADD

    将宿主机的文件,并进行解压

  • COPY

    和 ADD 指令功能一样,但是不会进行解压操作

  • WORKDIR

    用于切换工作目录

  • VOLUME

    配置宿主机与容器的目录映射

  • EXPOSE

    配置容器内项目对外暴露的端口号

  • CMD

    指定容器启动后,运行的命令

    比如,可以运行某个命令启动项目

2. 实战一下

使用 Docker 部署应用的常规流程是:

  • 开发项目并本地测试通过

  • 编写 Dockerfile 放置到项目根目录

  • 打包镜像文件

  • 运行镜像容器

  • 测试

为了演示方便,这里以一个简单的 Flask 项目为例进行讲解

2-1  项目开发

from flask import Flask

# 安装依赖
# pip3 install -U flask

app = Flask(__name__)


@app.route('/')
def index():
    return "测试容器部署!"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8888)

# 浏览器访问测试
# http://127.0.0.1:8888/

项目开发完成,并在本地测试通过后就可以编写 Dockerfile 文件了

2-2  编写 Dockerfile

在项目根目录下,创建一个 Dockerfile 文件,使用上面的指令编写描述脚本

需要注意的是,这里使用「 EXPOSE 」指令暴露的端口号与入口文件定义的端口号保持一致

# Dockerfile

FROM centos:7.9.2009
RUN yum makecache fast;
RUN yum install python3-devel python3-pip -y
RUN pip3 install -i https://pypi.douban.com/simple flask
COPY main.py /opt
WORKDIR /opt
EXPOSE 8888
CMD ["python3","main.py"]

2-3  构建镜像

# 在当前文件夹下,根据Dockerfile文件构建一个镜像
# 镜像名称:xag/my_flask_web
# --no-cache:不使用旧的缓存进行镜像构建
docker build --no-cache -t "xag/my_flask_web" .

2-4  运行镜像容器

使用 docker run 命令基于镜像运行一个容器

其中

  • -d:代表容器在后台运行,不是基于前台运行

  • --name:用于执行容器的别名

  • -p:用于配置宿主机与容器的端口映射

# -d:后台运行
# 宿主机(9999)映射容器内的8888(上面Dockerfile已经暴露了8888端口)
docker run -d --name flask_web -p 9999:8888 xag/my_flask_web  

2-5  测试一下

最后在浏览器中,通过宿主机暴露的端口号 9999 访问项目了

访问地址:http://127.0.0.1:9999/

3. 总结

文章中以一个简单的 Web 项目阐述了利用 Docker 部署项目的常规流程

实际上,Dockerfile 非常的灵活,它还支持 ARG/ENV 设置环境变量,VOlUME 指令挂载目录,ENTRYPOINT 配置启动程序和参数等,这部分内容大家可以根据官网介绍自行进行扩展

https://docs.docker.com/engine/reference/builder/

最后推荐一下我的ChatGPT星球,带领更多人用上 ChatGPT。无论你是学生,职场人士,还是全职宝妈,跟着我都能熟练掌握 ChatGPT,极大的提高你的创作能力和解决问题能力。入星球钱若有疑惑,咨询可 V: zlong0876,备注:星球咨询


以下正文:


ChatGPT 的风口正到来!


作为我们普通人,为了跟上时代,更应该马上行动,真正了解并熟练使用 ChatGPT。未来围绕着 ChatGPT 将会涌现出无数多的机会。我们一定要在这个领域内做点事情。如果在这个新的技术浪潮中,抓住一点点小的机会,那给我们人生带来的改变必然是巨大的! 


我相信有很多人没有 ChatGPT 的账号,或许连注册都不太会。跟着我们一起学习,这些方法我们都会手把手交给你!


目前我们星球 200 多人了,球友们都成功注册了,目前知道的可以通过一些特殊的邮箱和成功注册到 GPT 的账号!你一个人单打独斗玩 GPT 会遇到很多问题,费时费力,需要抱团取暖,才能走的更远!


如果你想快速上手、熟练应用 ChatGPT,获取第一首关于 ChatGPT 的资料,利用 ChatGPT 提升工作效率,获取 ChatGPT 变现机会等。请务必加入知识星球:ChatGPT 研究院。今天加入星球的小伙伴,直接送 ChatGPT 独立账户(数量有限)


所以如果你真的感兴趣,一定建议这个阶段加入,我们特别推荐加入知识星球72小时内如果不满意,可以无理由退出,然后款项原路返回,你也没损失.


入球福利:


考虑到很多小伙伴搞不定 ChatGPT 账号的问题,我们决定,凡是今天加入 ChatPGT  研究院的小伙伴,我们都会直接送一个 ChatGPT 独立账户。


这个星球能够为你提供什么服务呢?


1、ChatGPT 基础用法:账号注册、使用教程、基本玩法、提问技巧。


2、ChatGPT 前沿资讯、第一首资料、开源项目。


3、交流共享 ChatGPT 的各种信息,资源互换,答疑关于 ChatGPT 的问题,陪伴式学习与使用 ChatGPT.


4、分享如何利用 ChatGPT 提升工作效率,分享变现机会。


5、凡是今天加入星球都有一项重磅福利:免费获得 ChatGPT 独立账号一个。


我们第一期的定价是 198 元一年,这两天星球在试运营阶段,我们给出了加入的最低价 158,后面随着星球人数的增长,星球费用也会随之增长(破 1000 人涨价 10 元)。建议大家尽早以便宜的价格加入哦!


感兴趣的朋友们,欢迎扫码加入本星球:


机不可失失不再来!希望大家能在 2023 年抓住 ChatGPT 的风口,持续进步!



最后,无论是否加入,点击下方名片回复“chatgpt”送您一套ChatGPT入门资料


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/155228