Skip to content

容器化部署(Docker)核心功能实现

这是一个最小但完整的 Docker 容器化部署实现,展示了 Docker 的核心概念和实现方式。

项目结构

docker-system/
├── app/
│   ├── src/              # 应用源代码
│   ├── package.json
│   └── Dockerfile       # 应用 Dockerfile
├── nginx/
│   └── nginx.conf       # Nginx 配置
├── docker-compose.yml   # Docker Compose 配置
├── .dockerignore        # Docker 忽略文件
└── README.md

安装依赖

bash
npm install

运行测试

bash
npm test

核心功能

1. Dockerfile

实现应用容器化。

2. Docker Compose

实现多容器应用部署。

3. Nginx 配置

实现反向代理和负载均衡。

4. 健康检查

实现容器健康检查。

使用示例

构建镜像

bash
# 构建应用镜像
docker build -t myapp:latest .

# 构建多阶段镜像
docker build -t myapp:multi-stage --target builder .

运行容器

bash
# 运行单个容器
docker run -d -p 3000:3000 --name myapp myapp:latest

# 运行多容器应用
docker-compose up -d

管理容器

bash
# 查看容器
docker ps

# 查看日志
docker logs myapp

# 停止容器
docker stop myapp

# 删除容器
docker rm myapp

可扩展功能点

1. 多阶段构建

优化镜像大小:

dockerfile
# TODO: 实现多阶段构建
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
CMD ["node", "dist/index.js"]

2. 健康检查

实现容器健康检查:

dockerfile
# TODO: 实现健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD node -e "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"

3. 日志管理

配置日志驱动:

yaml
# TODO: 配置日志驱动
services:
  app:
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

4. 资源限制

设置容器资源限制:

yaml
# TODO: 设置资源限制
services:
  app:
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M

5. 网络配置

自定义网络配置:

yaml
# TODO: 自定义网络配置
networks:
  app-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

下一步

查看 05-lesson-plan.md 了解详细的课程计划。


架构师AI杜公众号二维码

扫描二维码关注"架构师AI杜"公众号,获取更多技术内容和最新动态