在 Docker 上部署简单 Web 应用的步骤
下面以一个基于 Python Flask 的简单 Web 应用为例,介绍如何在 Docker 上部署 Web 应用。
1. 创建 Web 应用
首先,创建一个简单的 Flask Web 应用,文件结构如下:
plaintext
web-app/
├── app.py
├── requirements.txt
└── Dockerfile
app.py:
python
运行
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)
requirements.txt:
plaintext
flask
2. 创建 Dockerfile
Dockerfile 用于定义 Docker 镜像的构建步骤:
Dockerfile
# 使用官方 Python 基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 5000
# 定义启动命令
CMD ["python", "app.py"]
3. 构建 Docker 镜像
在项目根目录下执行以下命令构建镜像:
bash
docker build -t flask-web-app .
参数说明:
-t flask-web-app
:为镜像指定标签(名称).
:指定构建上下文为当前目录
4. 运行 Docker 容器
构建完成后,可以使用以下命令运行容器:
bash
docker run -d -p 5000:5000 flask-web-app
参数说明:
-d
:后台运行容器(守护模式)-p 5000:5000
:将容器内部的 5000 端口映射到主机的 5000 端口
5. 验证应用
打开浏览器,访问 http://localhost:5000
,如果看到 "Hello, Docker World!",说明应用部署成功。
6. 停止和清理容器
如果需要停止运行中的容器,可以使用以下命令:
bash
# 查看运行中的容器
docker ps
# 停止容器(使用容器 ID 或名称)
docker stop <container_id_or_name>
# 删除容器
docker rm <container_id_or_name>
其他部署选项
使用 Docker Compose
对于更复杂的应用,可以使用 Docker Compose 来管理多容器应用。创建 docker-compose.yml
文件:
yaml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
restart: always
然后使用以下命令启动应用:
bash
docker-compose up -d
使用环境变量
可以通过环境变量配置应用,修改 app.py
:
python
运行
from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def hello():
name = os.getenv('NAME', 'Docker World')
return f"Hello, {name}!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
运行容器时传递环境变量:
bash
docker run -d -p 5000:5000 -e NAME="Doubao" flask-web-app
总结
通过以上步骤,你可以在 Docker 上部署一个简单的 Web 应用。主要流程包括:
- 创建应用代码
- 编写 Dockerfile 定义镜像构建步骤
- 构建 Docker 镜像
- 运行 Docker 容器
- 验证应用运行状态