Docker-Compose环境配置&使用

简介

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

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

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

Windows

Windows 系统最简单的方式,是下载一个 Dockers-Desktop(https://docs.docker.com/desktop/setup/install/windows-install/)

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

如下

Linux

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

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

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

设置可执行权限

bash 复制代码
chmod +x /usr/local/bin/docker-compose

这就装好了,试下

bash 复制代码
docker-compose -v

如下

另外

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

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

bash 复制代码
docker compose version

如下

使用

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

以博主之前介绍过的个人博客网站 Halo 为例(官网:https://docs.halo.run/getting-started/install/docker-compose)

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

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

这就是所谓的编排

bash 复制代码
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 可等同使用

bash 复制代码
# 拉取镜像
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
相关推荐
时间售卖铺2 小时前
Chrony与SSH实战:精准时间同步与安全远程登录
运维·安全·云原生·ssh
微订校园外卖系统2 小时前
校园代取快递系统选型:现成系统与定制开发的技术核对项
大数据·运维·人工智能·外卖系统·本地生活·微订
QXWZ_IA2 小时前
管道GIS测绘如何实现自动化成图:三种成图方式怎么选
运维·人工智能·安全·自动化
一条破秋裤3 小时前
【1112】Linux中断【整理】
linux·运维·服务器
分布式存储与RustFS3 小时前
OpenObserve 的日志别堆本地盘:用 RustFS 当它的对象存储底座
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
wz97543 小时前
Docker 从 systemd 托管容器、overlay2 存储驱动到 Compose 多容器实战
spring cloud·docker·eureka
新*4 小时前
ES 7.17 三节点 Docker 集群接入 IK 自定义词典:一次从丢插件到热更新的完整排障
运维·elasticsearch·docker·中文分词·ik分词
风翼靓崽4 小时前
jenkins搭建与简单使用
运维·jenkins
小白的码BUG之路5 小时前
Jenkins -- gitee+docker+harbor+k8s 部署项目
docker·gitee·jenkins
AlfredZhao5 小时前
Docker Compose 平滑切换环境变量文件,容器配置不残留
docker