Docker环境配置三步:装Docker(Ubuntu用官方源、加GPG密钥和仓库、安装并加docker组)、写多阶段Dockerfile(构建与运行分离、非root用户、设环境变量、EXPOSE端口、CMD启动)、配齐.dockerignore等文件后构建运行验证。

装好 Docker 环境
Ubuntu 20.04 或更新系统推荐用官方源安装:
- 更新并装依赖:
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common - 加 Docker 官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - 加仓库源:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - 再更新并装 Docker:
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io - 加当前用户到 docker 组,免 sudo:
sudo usermod -aG docker $USER,然后执行newgrp docker生效 - 验证:
docker run hello-world能输出欢迎信息就成功了
写一个靠谱的 Dockerfile
别用基础镜像硬拷代码,推荐多阶段构建,减体积、提安全:
- 第一阶段(构建):用
python:3.12-slim,只复制requirements.txt,pip install --no-cache-dir -r requirements.txt - 第二阶段(运行):同样用 slim 镜像,
COPY --from=0 /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages(或用--user方式复制到/root/.local) - 创建非 root 用户:
RUN useradd -m -u 1001 appuser && chown -R appuser:appuser /app,后面加USER appuser - 设环境变量:
ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1,避免日志卡住、不生成 .pyc - 暴露端口:
EXPOSE 8000(按你实际服务端口改) - 启动命令写清楚,比如 FastAPI 项目常用:
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0:8000", "--reload"](生产环境去掉--reload)
配套文件不能少
光有 Dockerfile 不够,这几个文件一起配才稳:
-
.dockerignore:把__pycache__、.git、.env、*.pyc、venv这些全列进去,避免无用文件进镜像 -
requirements.txt:确保 pip 依赖版本固定,比如fastapi==0.115.0,别写fastapi>=0.115.0 - 如果用 Dependency Injector 或配置文件(如
config.yml),记得在COPY时一并包含,或通过docker run -v挂载 - 简单项目可不用
docker-compose.yml,但稍复杂就建议配上,方便管理端口、环境变量和依赖服务
构建和运行一步到位
确认当前目录有 Dockerfile 后:
立即学习“Python免费学习笔记(深入)”;
- 构建:
docker build -t my-python-app:latest . - 运行:
docker run -d -p 8000:8000 --name myapp my-python-app:latest - 查日志:
docker logs -f myapp,看是否正常启动、监听 0.0.0.0:8000(不是 127.0.0.1!) - 浏览器访问
http://localhost:8000,通了就说明配好了


















