首页>软件资讯>常见问题

常见问题

用Docker部署一个Python应用

发布时间:2024-09-10 14:33:13人气:342

Docker 在现代开发中可谓是一款神器!它就像一位可以瞬间把杂乱的厨房整理得一尘不染的家务高手,让我们的应用在不同环境中保持一致,并且轻松地打包、运输、部署。今天,我就带大家一起用 Docker 部署一个 Python 应用.

目录

        一、为什么选择 Docker 部署?

        二、编写 Dockerfile

        三、构建 Docker 镜像

        四、运行容器

        五、小结

01为什么选择 Docker 部署?         

作为 Python 开发者,我们或多或少都遇到过这种痛苦:好不容易写好的应用,在自己本地跑得顺风顺水,一上生产环境却各种报错。可能是某个依赖版本不对,可能是环境配置有问题。总之,部署简直就是一场噩梦!


这时候 Docker 出场了!Docker 的核心优势就是“环境一致性”。你在自己电脑上打包的应用,可以在任何支持 Docker 的平台上以完全相同的方式运行,再也不用担心“我的代码在我电脑上没问题啊”这种尴尬场面了


先来个笑话助兴

在讲解技术之前,先讲个与 Docker 相关的笑话轻松一下:有一天,一个开发者对运维说:“我今天用 Docker 部署了我的应用,太棒了!”

运维皱了皱眉头:“所以,你想告诉我你学会了‘把问题装进箱子里然后推给别人’吗?”

开发者不禁大笑:“没错,但至少箱子还可以带走!”



02编写 Dockerfile                      

快速创建一个 Python 应用在部署之前,我们当然需要有个简单的 Python 应用。假设我们要部署的是一个极其简单的 Python Flask Web 应用。


首先,创建一个项目文件夹:

mkdir my-python-app

cd my-python-app



在这个文件夹里,创建一个名为 app.py 的文件,代码如下:

from flask import Flask


app = Flask(__name__)


@app.route('/')

def hello():

    return "Hello, Docker World!"


if __name__ == '__main__':

    app.run(host='0.0.0.0', port=5000)



我们使用了 Flask,这是一个极其轻量级的 Python Web 框架。你可以通过运行 pip install flask 来安装它。如果你还没用过 Flask,别担心,这里并不重要,重点在于用 Docker 来打包并运行它。



编写 Dockerfile现在,我们已经有了一个简单的 Python 应用,接下来我们要把它打包成 Docker 镜像。为了实现这一点,我们需要创建一个 Dockerfile。


在项目根目录下新建一个名为 Dockerfile 的文件,内容如下:

# 使用官方 Python 基础镜像

FROM python:3.9-slim


# 设置工作目录

WORKDIR /app


# 复制当前目录内容到容器的 /app 目录

COPY . /app


# 安装 Flask

RUN pip install flask


# 暴露 Flask 运行的端口

EXPOSE 5000


# 运行应用

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



让我们分解一下这个 Dockerfile:FROM python:3.9-slim:这行告诉 Docker 使用 Python 3.9 的官方精简版镜像作为基础镜像。你可以把它理解成一个干净的“操作系统”。

WORKDIR /app:将工作目录设为 /app,所有接下来的操作都将在这个目录下进行。

COPY . /app:将我们当前目录的所有文件复制到容器中的 /app 目录。

RUN pip install flask:在容器中安装 Flask。

EXPOSE 5000:告诉 Docker 容器会使用 5000 端口,这也是 Flask 的默认端口。

CMD ["python", "app.py"]:运行应用。


当然如果你项目中使用了很多 Python 第三方库,推荐编写 requirements.txt 写入相关依赖库,然后改成下面这样:

RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple



03构建 Docker 镜像                    

Dockerfile 写好之后,就可以开始构建镜像了。运行以下命令:docker build -t my-python-app .


-t 标志是用来为镜像指定一个标签(tag)。这里我们将镜像命名为 my-python-app。构建完成后,你可以运行 docker images 来查看刚才构建的镜像。


04运行容器                                

镜像构建好后,就可以用它来启动一个容器。运行以下命令:

docker run -d -p 5000:5000 my-python-app



这行命令的意思是:-d:让容器以后台模式运行(detached mode)。

-p 5000:5000:将容器的 5000 端口映射到主机的 5000 端口。

my-python-app:使用我们刚才构建的镜像。

现在,你可以打开浏览器,访问 http://localhost:5000,看看结果!页面应该显示“Hello, Docker World!”。


05小结                                     


我们已经通过 Docker 部署了一个 Python 应用!从环境搭建到应用打包再到运行,只需几步。相信在此过程中,你已经感受到了 Docker 的强大之处。


当然,Docker 的世界远不止这些。在实际项目中,Docker 可以帮你管理复杂的微服务架构、提升 CI/CD 流程效率,甚至在开发时提供一个干净一致的开发环境。下次再遇到“环境不一致”的噩梦时,记得把问题交给 Docker,享受它带来的美好体验。



上一条:docker和传统虚拟机有什么区别

下一条:Docker Hub访问恢复?