Docker Compose 介绍

Docker Compose 介绍

Docker Compose 介绍

1. 什么是

docker-compose.yml

docker-compose.yml

是 Docker Compose 的配置文件,用于定义和管理多个 Docker 容器的运行方式。
它允许你用一个 YAML 文件描述多个容器的服务、网络、数据卷等,并通过简单的命令快速启动和管理整个应用。


2.

docker-compose.yml

的作用

  • 批量管理多个容器:一条命令就可以启动/停止多个容器,而不需要手动

    docker run

  • 定义容器间的依赖关系:指定某个服务在另一个服务启动后运行,比如 Web 应用依赖于数据库。

  • 简化环境配置:通过

    environment

    指定环境变量,减少手动配置。

  • 支持数据持久化:可以使用

    volumes

    挂载数据,避免数据丢失。

  • 支持不同的运行环境:可以使用

    docker-compose.override.yml

    适配开发、测试、生产环境。

  • 提供一致的开发环境:开发人员可以用相同的

    docker-compose.yml

    文件,确保所有人运行的是相同的环境。


3.

docker-compose.yml

基本语法

docker-compose.yml

是一个 YAML 文件,它的基本结构如下:


version: '3.8'   # Docker Compose 文件版本
services:        #
 定义多个服务
 
  服务名称:
    image: 镜像名  # 或者使用 build 构建
    build: .       # 指定 Dockerfile 目录
    ports:        # 端口映射
      - "宿主机端口:容器端口"
    environment:  # 设定环境变量
      变量名: 值
    volumes:      # 挂载卷(持久化数据)
      - "宿主机路径:容器路径"
    depends_on:   # 依赖关系
      - 其他服务名称
volumes:         # 定义数据卷(可选)
  卷名:
networks:        # 定义网络(可选)
  自定义网络:

4.

docker-compose.yml

的使用

1) 编写

docker-compose.yml

假设你有一个

docker-compose.yml

文件:


version: '3.8'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

2) 启动服务

运行以下命令:


docker-compose up -d  # 在后台启动所有容器

-d

代表后台运行,如果去掉

-d

,它会在前台运行并显示日志。

3) 查看运行中的服务


docker-compose ps

4) 查看容器日志


docker-compose logs -f

5) 停止和删除容器


docker-compose down

这将停止并删除所有容器,但不会删除数据卷。

6) 删除所有数据


docker-compose down -v

-v

选项会同时删除

volumes

,清空存储的数据。

7) 重新构建容器

如果你修改了

Dockerfile

docker-compose.yml

,需要重新构建:


docker-compose up --build -d

5.

docker-compose.yml

进阶用法

1) 使用

depends_on

控制服务依赖


services:
  web:
    image: nginx
    depends_on:
      - db
  db:
    image: mysql:5.7

depends_on

确保

web

db

启动后再运行。

2) 使用

volumes

持久化数据


services:
  db:
    image: postgres
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

这样

PostgreSQL

数据库不会因容器重启而丢失数据。

3) 自定义网络


networks:
  mynetwork:

services:
  web:
    image: nginx
    networks:
      - mynetwork
  db:
    image: mysql
    networks:
      - mynetwork

所有服务都连接到

mynetwork

网络,能够相互访问。

4) 绑定环境变量


services:
  app:
    image: myapp
    env_file:
      - .env

.env

文件内容:

DATABASE_URL=mysql://user:password@db:3306/mydb

这样

.env

里的变量会自动注入。


6.

docker-compose.yml

实战示例

📌 示例:运行 WordPress + MySQL


version: '3.8'
services:
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

运行:


docker-compose up -d

然后访问

http://localhost:8080

即可看到 WordPress。


7.

docker-compose.yml

常用命令

命令 作用
docker-compose up -d
后台启动容器
docker-compose down
停止并删除容器
docker-compose down -v
删除容器+数据卷
docker-compose ps
查看运行中的容器
docker-compose logs -f
查看实时日志
docker-compose restart
重启所有容器
docker-compose exec 容器名 bash
进入容器
docker-compose build
重新构建镜像

8. 总结

docker-compose.yml

的作用:定义多个容器,管理它们的依赖、数据存储、网络等。
使用步骤

  1. 创建

    docker-compose.yml

  2. 运行

    docker-compose up -d

  3. 使用

    docker-compose ps

    查看状态

  4. 需要停止时

    docker-compose down

适用于

  • 启动 多容器应用(如 Web + 数据库)

  • 本地开发环境

  • 测试和 CI/CD

💡 现在你可以轻松用

docker-compose.yml

启动并管理容器了!🚀

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容