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访问恢复?