Docker容器化部署实战:从零搭建微服务架构

Docker是一个开源的容器化平台,允许开发者将应用及其依赖打包到轻量级、可移植的容器中。与虚拟机不同,容器共享宿主机内核,启动更快、资源占用更少。

一、Docker基础操作

安装Docker(Ubuntu):
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker

常用命令:
docker pull nginx:latest
docker images
docker run -d -p 80:80 --name mynginx nginx
docker ps
docker stop mynginx
docker rm mynginx

二、编写Dockerfile

Python应用示例:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]

多阶段构建优化镜像体积:
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80

三、Docker Compose编排微服务

version: "3.8"
services:
  web:
    build: ./app
    ports:
      - "8000:8000"
    depends_on:
      - db
      - redis
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  pgdata:

四、生产环境最佳实践

1. 使用.dockerignore排除不需要的文件
2. 不要在镜像中存储敏感信息,使用Docker Secrets
3. 固定基础镜像版本标签,避免latest
4. 合理利用构建缓存,COPY依赖文件在前
5. 使用健康检查确保服务可用

HEALTHCHECK --interval=30s --timeout=3s --retries=3
  CMD curl -f http://localhost:8000/health || exit 1

总结

Docker容器化是现代应用部署的标准方式。通过Dockerfile定义应用环境,通过Docker Compose编排多个服务,可以轻松实现微服务架构的本地开发和部署。

更多推荐