Docker 容器化部署

内容已升级至全栈资料库专题页 — 本页保留岗位速查

📦

本页内容已整合至更权威的专题页面

原来的 Docker 教程已由全栈资料库的专题图解页全面覆盖——包含更详细的原理讲解、SVG 流程图、IDE 风格代码窗口和面试高频考点。

建议直接学习以下专题页:深度和广度都远超本页原有内容。

运行原理图解

09-Docker 容器运行原理

Docker 架构全景、容器 vs 虚拟机、镜像分层原理、容器生命周期 SVG 流程图、namespace/cgroup 原理

构建与部署图解

03-Docker 命令执行图解

Dockerfile 逐行解析、构建缓存原理、docker compose 编排、多阶段构建、生产部署最佳实践

🏭 中际旭创岗位速查

以下是制造业数据可视化工程师的 Docker 专用模板和排障经验,不在通用专题页中。

01 — 制造业大屏 Dockerfile 模板

大屏项目(Vue + Nginx)的标准 Dockerfile,直接可用:

Dockerfile — 制造业大屏标准模板
# ---- 阶段1: 构建 ----
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --registry=https://registry.npmmirror.com
COPY . .
RUN npm run build

# ---- 阶段2: 部署 ----
FROM nginx:1.25-alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

配套 nginx.conf(解决 Vue Router history 模式 + 代理后端 API):

nginx.conf — 大屏项目标配
server {
    listen 80;
    server_name _;

    # Vue Router history 模式必须
    location / {
        root   /usr/share/nginx/html;
        index  index.html;
        try_files $uri $uri/ /index.html;
    }

    # 代理后端 API
    location /api/ {
        proxy_pass http://backend:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

02 — docker-compose 全栈模板

大屏 + 后端 + Redis + MySQL 一键启动:

docker-compose.yml — 制造业大屏全栈
version: '3.8'
services:
  web:
    build: ./frontend
    ports: ["8080:80"]
    depends_on: [backend]

  backend:
    build: ./backend
    ports: ["3000:3000"]
    environment:
      - REDIS_URL=redis://redis:6379
      - DB_HOST=mysql
      - DB_NAME=factory_dashboard
    depends_on: [redis, mysql]

  redis:
    image: redis:7-alpine
    ports: ["6379:6379"]

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_DATABASE: factory_dashboard
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

03 — 大屏部署排障速查

🚨 大屏白屏?3 步排查

1. 查容器状态docker ps -a 看容器是否 Exit
2. 查容器日志docker logs dashboard-web,常见原因:nginx.conf 写错、dist 目录为空
3. 进容器检查docker exec -it dashboard-web sh,确认 /usr/share/nginx/html 下有 index.html