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
相关推荐
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_961875243 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant