百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文
 Docker 进阶使用与实战部署案例:全栈部署实战与自动化

Docker 进阶使用与实战部署案例:全栈部署实战与自动化

  • 网站名称: Docker 进阶使用与实战部署案例:全栈部署实战与自动化
  • 网站分类:技术文章
  • 收录时间:2025-07-15 23:00
  • 网站地址:

进入网站

“ Docker 进阶使用与实战部署案例:全栈部署实战与自动化” 网站介绍

随着容器技术的普及,简单跑个容器已经不够,如何构建多平台镜像、集成 CI/CD 流水线,以及做好日志与资源管理,成为真正高手的标配。本篇帮你扫清进阶路上的关键点,最后通过 Nginx + Flask 的全栈案例,带你体验实战部署的魅力!


一、多平台镜像构建(buildx)

在多架构设备(x86、ARM)共存的时代,构建跨平台镜像显得尤为重要。Docker 官方提供了 buildx 工具支持多平台构建。

开启 buildx

docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap

构建多平台镜像示例

docker buildx build --platform linux/amd64,linux/arm64 -t yourname/yourapp:latest --push .
  • --platform 指定目标平台
  • --push 构建完成后直接推送到镜像仓库

二、CI/CD 集成示例(GitHub Actions & GitLab CI)

自动化构建和部署已是现代开发流程的必备技能。以下是两大主流平台的简单示范:

GitHub Actions 示例(.github/workflows/docker.yml)

name: Docker Build & Push

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v2

    - name: Login to DockerHub
      uses: docker/login-action@v2
      with:
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}

    - name: Build and push
      uses: docker/build-push-action@v4
      with:
        push: true
        tags: yourname/yourapp:latest
        platforms: linux/amd64,linux/arm64

GitLab CI 示例(.gitlab-ci.yml)

stages:
  - build

build_image:
  stage: build
  image: docker:latest
  services:
    - docker:dind
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:latest .
    - docker push $CI_REGISTRY_IMAGE:latest

三、日志管理与资源限制配置

日志管理

Docker 默认日志驱动为 json-file,日志文件易膨胀。建议根据需求配置:

docker run --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx
  • 限制单个日志文件最大 10MB,最多保留 3 个轮转文件,避免磁盘撑爆。

资源限制

限制容器资源,防止“资源争抢”:

docker run -d --memory=512m --cpus="1.0" nginx
  • 限制最多占用 512MB 内存和 1 个 CPU 核心。

四、实战案例:Docker + Nginx + Flask 全栈项目部署

1. Flask 应用示例app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Docker Fullstack!"

if __name__ == '__main__':
    app.run(host='0.0.0.0')

2. Flask Dockerfile

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

3. Nginx 配置文件default.conf

server {
    listen 80;
    location / {
        proxy_pass http://flask:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

4.docker-compose.yml

version: "3.9"

services:
  flask:
    build: .
    container_name: flask
    ports:
      - "5000:5000"

  nginx:
    image: nginx:alpine
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - flask

5. 部署步骤


docker-compose up -d --build

访问 http://localhost:8080,你会看到页面显示:

Hello, Docker Fullstack!

总结回顾

技能点

内容说明

多平台构建

docker buildx 支持跨架构镜像构建

CI/CD 集成

GitHub Actions 与 GitLab CI 自动化流水线

日志与资源管理

限制日志大小、容器内存 CPU 限制

全栈项目实战

Flask + Nginx 结合,真实场景部署示范