一. 前言

docker-compose 是 Docker 官方提供的一个工具,用于定义和运行多个 Docker 容器的应用。
它通过一个 YAML 文件(通常是 docker-compose.yml)来配置应用程序的服务、网络和卷等,然后使用单个命令来启动、停止和管理整个应用。以下是 docker-compose 的基本使用:

二. 安装

1. 安装 Docker Compose

在使用 docker-compose 之前,需要确保你的系统上已经安装了 Docker,并且安装了 Docker Compose。安装 Docker Compose 的具体步骤取决于你的操作系统。以 Linux 系统为例,可以通过以下命令安装(以官方 GitHub 仓库的最新发布版本为例):

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  
sudo chmod +x /usr/local/bin/docker-compose
  • 1.
  • 2.

安装完成后,可以通过运行 docker-compose --version 来验证安装是否成功。

2. 编写 docker-compose.yml 文件

docker-compose.yml 文件是 docker-compose 的核心配置文件,它定义了应用程序的所有服务、网络、卷等配置。以下是一个简单的示例:

version: '3.8'  
services:  
  web:  
    image: nginx:latest  
    ports:  
      - "80:80"  
    volumes:  
      - ./nginx.conf:/etc/nginx/nginx.conf  
  app:  
    image: node:12  
    working_dir: /app  
    volumes:  
      - .:/app  
    command: npm start  
    depends_on:  
      - web
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

在这个示例中,定义了两个服务:web 和 app。web 服务使用 Nginx 镜像,并映射了主机的 80 端口到容器的 80 端口,还挂载了一个本地的 nginx.conf 文件到容器中的 Nginx 配置目录。app 服务使用 Node.js 镜像,设置了工作目录和挂载当前目录到容器中,然后执行 npm start 命令。此外,app 服务还依赖于 web 服务的启动。

3. 使用 docker-compose 命令

docker-compose up
  • 1.

示例二:

docker-compose和dockerfile配合使用

1.docker-compose.yml
"version": "3.7"
services:

  server1:
    container_name: test-server
    build:
      context: ./
      dockerfile: dockerfile
    volumes:
      - "/var/apps/test/server1:/var/app"
    ports:
      - "8080:8080"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
2.dockerfile
FROM imgage_name:latest
# 使用官方的Anaconda镜像作为基础镜像
# 设置工作目录[可选]
WORKDIR /var/app
# 定义环境变量
ENV APP_BASE_PATH /var/app
# 使端口80可供此容器外的环境使用
EXPOSE 5000
VOLUME ["/var/app"]
# 定义环境变量
# ENV NAME FAQAPI_ENV
WORKDIR $APP_BASE_PATH/
ENTRYPOINT ["python3", "./app.py"]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
3.执行命令

1.运行服务

docker-compose up
  • 1.

2.使用docker重启已构建好的服务

docker restart test-server
  • 1.

docker-compose其他命令

docker-compose up:构建、创建并启动应用程序的容器。
docker-compose down:停止并删除应用程序的容器、网络和卷等。
docker-compose start:启动已创建的应用程序的容器。
docker-compose stop:停止正在运行的应用程序的容器。
docker-compose restart:重启应用程序的容器。
docker-compose pause:暂停应用程序的容器。
docker-compose unpause:取消暂停应用程序的容器。
docker-compose build:重新构建应用程序的容器。
docker-compose logs:查看应用程序容器的日志。
docker-compose ps:列出正在运行的应用程序容器。
docker-compose exec:在运行中的容器中执行命令。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

总结

docker-compose 是一个强大的工具,它简化了多容器 Docker 应用程序的部署和管理。通过编写一个 docker-compose.yml 文件,并使用 docker-compose 命令,你可以轻松地启动、停止、管理整个应用程序,而无需手动配置和启动每个容器。