Docker 容器化部署实战:从开发到生产的完整工作流
发布时间:2026年2月 | 预计阅读时间:15分钟
🐳 引言
容器化技术已经成为现代软件开发的标配。从本地开发到生产部署,Docker 让环境一致性不再是问题。本文将带你掌握 Docker 的核心概念和实战技巧,构建完整的容器化工作流。
📋 目录
- 一、Docker 核心概念回顾
- 二、Dockerfile 最佳实践
- 三、多阶段构建优化镜像
- 四、Docker Compose 编排服务
- 五、CI/CD 集成与自动化部署
- 六、生产环境最佳实践
一、Docker 核心概念回顾
1.1 核心组件
- 镜像 (Image):只读模板,包含应用运行所需的一切
- 容器 (Container):镜像的运行实例,相互隔离
- Dockerfile:定义镜像构建步骤的脚本
- 卷 (Volume):持久化数据存储
- 网络 (Network):容器间通信机制
1.2 常用命令速查
docker pull nginx:latest docker images docker run -d -p 80:80 --name mynginx nginx docker ps -a docker stop mynginx docker volume create mydata docker system prune -a
二、Dockerfile 最佳实践
2.1 编写高效的 Dockerfile
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app USER appuser HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:8000/health || exit 1 EXPOSE 8000 CMD ["python", "app.py"]
2.2 .dockerignore 优化
__pycache__ *.pyc .env .git node_modules/
三、多阶段构建优化镜像
3.1 Node.js 应用多阶段构建
FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --only=production FROM node:18-alpine WORKDIR /app COPY --from=builder /app/node_modules ./node_modules COPY . . USER node EXPOSE 3000 CMD ["node", "server.js"]
四、Docker Compose 编排服务
version: '3.8'
services:
app:
build: .
ports:
- "8000:8000"
environment:
- NODE_ENV=development
depends_on:
- db
db:
image: postgres:15-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
五、CI/CD 集成与自动化部署
name: Docker Build and Deploy
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build and push
uses: docker/build-push-action@v5
with:
push: true
tags: user/myapp:latest
deploy:
needs: build
steps:
- name: Deploy
run: |
docker-compose pull
docker-compose up -d
六、生产环境最佳实践
- 使用非 root 用户运行容器
- 限制资源使用(内存、CPU)
- 定期扫描镜像漏洞
- 设置备份策略
🎯 总结
- ✅ 多阶段构建可以大幅减少镜像体积
- ✅ 使用 .dockerignore 优化构建上下文
- ✅ Docker Compose 是本地开发和测试的最佳选择
- ✅ CI/CD 集成实现自动化部署
欢迎在评论区分享你的容器化经验!🐳
文章评论