项目背景与挑战
容器化是现代运维的标配。本文手把手教你部署 Docker,构建应用镜像,以及使用 Docker Compose 编排多服务应用。 安装 Docker bash 一键安装脚本 curl fsSL https://get.docker.com | sh 添加用户到 docker 组 sudo usermod aG docker $USER newgrp dock
解决方案
容器化是现代运维的标配。本文手把手教你部署 Docker,构建应用镜像,以及使用 Docker Compose 编排多服务应用。 安装 Docker bash 一键安装脚本 curl fsSL https://get.docker.com | sh 添加用户到 docker 组 sudo usermod aG docker $USER newgrp dock
交付结果
详细说明
容器化是现代运维的标配。本文手把手教你部署 Docker,构建应用镜像,以及使用 Docker Compose 编排多服务应用。
安装 Docker
# 一键安装脚本
curl -fsSL https://get.docker.com | sh
# 添加用户到 docker 组
sudo usermod -aG docker $USER
newgrp docker
为 opsglobal 编写 Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
USER node
CMD ["node", "server.js"]
Docker Compose 编排
version: 3.8
services:
app:
build: .
ports:
- 3000:3000
environment:
- NODE_ENV=production
- DB_HOST=db
depends_on:
- db
restart: unless-stopped
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: opsglobal
volumes:
- mysql_data:/var/lib/mysql
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app
volumes:
mysql_data:
实用技巧
- 使用 .dockerignore 减少镜像体积
- 多阶段构建优化生产镜像
- 配置健康检查自动重启异常容器
你的系统也遇到类似问题?
我们可以根据你的实际环境复用类似排查思路,提供远程诊断、修复、优化和交付报告。