示例:使用 Docker 部署一个 Python Web 应用
1. 编写 Python Web 应用
假设我们有一个简单的 Python Flask Web 应用,用于展示一个简单的 Hello World 页面。
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, Docker!"
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
2. 编写 Dockerfile
在项目根目录下创建 Dockerfile,定义 Docker 镜像的构建步骤和环境配置。
Dockerfile:
# 使用官方 Python 运行时镜像作为基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 将当前目录下的所有文件复制到工作目录 /app 下
COPY . .
# 安装 Flask 和其它依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露容器端口
EXPOSE 5000
# 定义环境变量
ENV FLASK_APP=app.py
# 运行应用
CMD ["flask", "run", "--host=0.0.0.0"]
3. 构建 Docker 镜像
使用以下命令构建 Docker 镜像:
docker build -t myflaskapp .
4. 运行 Docker 容器
使用以下命令运行 Docker 容器,并将本地的 5000 端口映射到容器内的 5000 端口:
docker run -p 5000:5000 myflaskapp
5. 测试应用程序
在浏览器中访问 http://localhost:5000
,应该能看到 “Hello, Docker!” 的页面。
6. 将镜像上传到 Docker Hub(可选)
如果希望将镜像分享或在其他地方使用,可以将镜像上传到 Docker Hub。
-
登录 Docker Hub:
docker login
-
标记镜像:
docker tag myflaskapp yourdockerusername/myflaskapp:latest
将
yourdockerusername
替换为你在 Docker Hub 上的用户名。 -
上传镜像:
docker push yourdockerusername/myflaskapp:latest
7. 在其他服务器上部署和运行镜像
在其他支持 Docker 的服务器上,使用以下命令拉取并运行镜像:
docker pull yourdockerusername/myflaskapp:latest
docker run -p 5000:5000 yourdockerusername/myflaskapp:latest
业务案例解释
在这个示例中,我们创建了一个简单的 Python Flask Web 应用,使用 Dockerfile 定义了构建镜像的步骤和环境配置。然后通过 docker build
构建镜像,docker run
启动容器并测试应用程序。
通过 Docker,我们实现了以下优点:
- 环境一致性:在不同的环境中以相同的方式运行应用程序。
- 便捷的部署和扩展:通过 Docker Hub 可以轻松分享和部署镜像。
- 隔离性和安全性:每个容器互相隔离,提供了更高的安全性和稳定性。