Docker-Compose环境配置&使用

0 阅读3分钟

简介

Docker-Compose,是基于 Docker 容器的指令编排技术,当你的某个应用需要用到数个容器时,可以使用 Docker-Compose,一键拉取、启动所有所需的 Docker 容器,非常方便

简单来说,Docker 的命令是作用到单个 Docker 容器的,Docker-Compose 是作用到一批 Docker 容器的

本文介绍如何配置 Docker-Compose 环境

Windows

Windows 系统最简单的方式,是下载一个 Dockers-Desktop(docs.docker.com/desktop/set…

安装该软件,会在 Windows 系统中装一个 Linux 子系统(wsl),在这里面就配备了 Docker-Compose 环境

如下

在这里插入图片描述

Linux

配置 Docker-Compose 的前提,是需要有 Docker 环境,安装 Docker 参考下面这篇博客

在这里插入图片描述

敲下面的命令,下载 Docker-Compose 命令,并放到环境变量中

curl -SL https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

设置可执行权限

chmod +x /usr/local/bin/docker-compose

这就装好了,试下

docker-compose -v

如下

在这里插入图片描述

另外

以上的单独的 Docker-Compose 是旧版的使用方式,docker-compose 命令作为单独的可执行程序进行配置

新版本的 Docker,内置了 Docker-Compose,敲下面的命令验证你的 Docker 是否有 Docker-Compose 环境

docker compose version

如下

在这里插入图片描述

使用

接下来使用一波,并整理一下 Docker-Compose 的一些命令

以博主之前介绍过的个人博客网站 Halo 为例(官网:docs.halo.run/getting-sta…

将 Halo 提供的 Docker-Compose 文件(docker-compose.yml)下载下来

该文件中定义了所需要的容器、容器使用的镜像和版本、挂载的数据卷、开放的端口、环境变量等信息

这就是所谓的编排

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo-pro:2.23
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
  halodb:
    image: postgres:15.4
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

在文件所在目录,敲 docker compose up -d 启动文件中配置的容器

在这里插入图片描述

docker compose ps 查看容器情况,文件中定义了两个容器,如下,都跑起来了

在这里插入图片描述

docker compose logs 查看容器的日志信息,和 docker 命令一样

在这里插入图片描述

访问一下,能访问到应用界面,没得问题

在这里插入图片描述

命令列表

以下命令,docker-compose 与 docker compose 可等同使用

# 拉取镜像
docker compose pull

# 启动
docker compose up -d

# 停止容器,并删除容器,不会删除挂载的数据卷
docker compose down

# 查看状态
docker compose ps

# 实时看日志,所有容器合并的日志
docker compose logs -f

# 服务名,即 docker-compose.yml 中定义的某个名称的容器
docker compose exec 服务名 bash

# 重启所有容器
docker compose restart