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
- 端口被占:
docker: port is already allocated→lsof -i :8080找到占用的进程,kill 掉或换端口 - 容器反复重启:
docker logs -f 容器名看报错;常见原因:前端 build 失败、nginx.conf 语法错误 - API 502:后端容器没启动或
proxy_pass地址写错,docker exec进 nginx 容器curl backend:3000测试 - 数据不更新:浏览器缓存 → 强刷 Ctrl+Shift+R;CDN 缓存 → 改版本号;Docker 镜像缓存 →
docker build --no-cache - 磁盘满:
docker system df查看 →docker system prune -a清理(注意会删未使用的镜像)