使用 Docker 容器化 Flask 应用(含 Docker 安装指南)实践
安装 Docker
1. 卸载旧版本(如果有)
sudo apt-get remove docker docker-engine docker.io containerd runc
2. 安装依赖
sudo apt-get update sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release
3. 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
4. 配置清华大学 Docker 镜像源
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5. 验证安装
docker version docker compose version

容器化 Flask 应用
1. 创建 Flask 应用
在本例中,我们使用之前制作的一个简易 Flask 应用,它包括用户注册、登录和生成 JWT 令牌等功能。
https://github.com/rainding0311/ruian-iam
2. 创建 Dockerfile
FROM python:3.9-slim WORKDIR /app COPY . /app RUN pip install --no-cache-dir -r requirements.txt EXPOSE 5001 CMD ["python", "app.py"]
3. 创建 requirements.txt
flask mysql-connector-python bcrypt pyjwt
4. 构建 Docker 镜像
docker build -t flask-oauth2-app .
5. 运行 Docker 容器
docker run -d -p 5001:5001 flask-oauth2-app
3. 补充:代码中的密码安全问题
避免将数据库密码等敏感信息硬编码在代码中,建议使用如下方法:
- 使用
.env
文件 +python-dotenv
加载环境变量 - 或使用 Docker
-e
参数传入变量
示例 .env
文件:
DB_PASSWORD=your_password
在 Python 中读取:
import os from dotenv import load_dotenv load_dotenv() db_password = os.getenv("DB_PASSWORD")
在 Dockerfile 中添加:
RUN pip install python-dotenv