Appearance
Docker 容器化部署实践
简介
Docker 是一个开源的容器化平台,可以将应用及其依赖打包成标准化的容器。
Dockerfile 编写
基本结构
dockerfile
# 使用官方 Python 镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]多阶段构建
dockerfile
# 构建阶段
FROM node:18-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# 生产阶段
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]Docker Compose
基本配置
yaml
version: '3.8'
services:
database:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
volumes:
- mysql_data:/var/lib/mysql
ports:
- "3306:3306"
backend:
build: ./backend
depends_on:
- database
environment:
DB_HOST: database
DB_PORT: 3306
ports:
- "8000:8000"
frontend:
build: ./frontend
ports:
- "3000:80"
depends_on:
- backend
volumes:
mysql_data:最佳实践
- 使用 .dockerignore 排除不必要的文件
- 合理利用镜像层缓存
- 使用多阶段构建减小镜像体积
- 不要在容器中存储持久化数据,使用 volumes
- 为每个环境使用不同的 compose 文件
常用命令
bash
# 构建镜像
docker build -t myapp:latest .
# 运行容器
docker run -d -p 8000:8000 myapp:latest
# 使用 Compose
docker compose up -d
docker compose down
docker compose logs -f
# 查看容器
docker ps
docker logs <container_id>总结
Docker 简化了应用的部署和运维,是现代应用开发不可或缺的工具。