服务器 > 服务器 > 云虚拟主机

Docker Compose 使用实例详解

8人参与 2025-04-24 云虚拟主机

一、docker compose 简介

docker compose 是用于定义和运行多容器 docker 应用程序的工具,通过 yaml 文件配置应用程序服务,一键启动所有关联容器。

二、安装 docker compose

linux

sudo curl -l "https://mirrors.tuna.tsinghua.edu.cn/docker/compose/releases/download/v2.32.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

windows/macos
通过 docker desktop 安装(已内置 compose)

验证安装:

docker-compose --version

三、基础配置文件示例(docker-compose.yml)

version: '3.8'  # compose文件格式版本
services:
  web:
    build: .  # 使用当前目录的dockerfile构建
    ports:
      - "8000:80"  # 主机端口:容器端口
    depends_on:
      - db
    environment:
      - db_host=db
    networks:
      - mynetwork
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    environment:
      mysql_root_password: example
      mysql_database: myapp
    networks:
      - mynetwork
    healthcheck:
      test: ["cmd-shell", "mysqladmin ping -h localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
volumes:
  db_data:
networks:
  mynetwork:
    driver: bridge

四、关键配置解析

五、常用命令

启动服务

docker-compose up -d  # 后台启动
docker-compose up --build  # 重新构建后启动

停止服务

docker-compose down  # 停止并删除容器、网络等
docker-compose stop  # 仅停止容器

查看日志

docker-compose logs -f  # 实时查看日志
docker-compose logs web  # 查看指定服务日志

进入容器

docker-compose exec web bash  # 进入web容器

构建镜像

docker-compose build  # 构建所有服务镜像
docker-compose build web  # 仅构建web服务镜像

六、完整项目示例(node.js + mysql + nginx)

项目结构

myapp/
├── docker-compose.yml
├── nginx/
│   ├── nginx.conf
│   └── dockerfile
├── app/
│   ├── package.json
│   ├── server.js
│   └── dockerfile
└── .env

docker-compose.yml

version: '3.8'
services:
  nginx:
    build: ./nginx
    ports:
      - "80:80"
    depends_on:
      - app
    networks:
      - frontend
      - backend
  app:
    build: ./app
    environment:
      - node_env=production
      - db_host=db
    networks:
      - backend
    depends_on:
      db:
        condition: service_healthy
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    environment:
      mysql_root_password_file: /run/secrets/db_root_password
      mysql_database: myapp
    secrets:
      - db_root_password
    networks:
      - backend
    healthcheck:
      test: ["cmd-shell", "mysqladmin ping -h localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
volumes:
  db_data:
networks:
  frontend:
  backend:
secrets:
  db_root_password:
    file: .env

app/dockerfile

from node:18-alpine
workdir /app
copy package*.json ./
run npm install --production
copy . .
cmd ["npm", "start"]

nginx/dockerfile

from nginx:alpine
copy nginx.conf /etc/nginx/conf.d/default.conf

nginx/nginx.conf

server {
    listen 80;
    location / {
        proxy_pass http://app:3000;
        proxy_set_header host $host;
        proxy_set_header x-real-ip $remote_addr;
    }
}

.env

db_root_password=supersecret

七、高级功能

扩展配置

# 扩展服务实例
app:
  deploy:
    replicas: 3
  resources:
    limits:
      cpus: '0.5'
      memory: 512m

多环境配置

# docker-compose.override.yml(开发环境)
version: '3.8'
services:
  app:
    build: ./app
    volumes:
      - ./app:/app  # 挂载代码目录实现热更新
    environment:
      - node_env=development

使用模板文件

# docker-compose.yml
services:
  app:
    image: myapp:${tag}

八、最佳实践

docker system prune -a

九、调试技巧

查看容器状态:

docker-compose ps

检查网络配置:

docker network inspect mynetwork

验证配置文件:

docker-compose config

到此这篇关于docker compose 使用实例的文章就介绍到这了,更多相关docker compose 使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Docker 集成KingBase的详细过程

04-24

Docker使用、容器迁移的方案详解

04-24

Docker如何更换镜像源提高拉取速度

04-24

Docker安装Oracle创建表空间并导入数据库完整步骤

04-24

Docker快速搭建Kafka集群及测试的技术指南

04-24

idea使用docker插件一键部署项目的操作方法

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论