# docker-compose **Repository Path**: byte-y/docker-compose ## Basic Information - **Project Name**: docker-compose - **Description**: docker-compose部署合集 - **Primary Language**: Unknown - **License**: LGPL-2.1 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2025-06-15 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docker Compose 本地服务集合 这是一个用于本地开发、测试和验证的 Docker Compose 与 Dockerfile 集合,按服务类型整理了 Java 应用、消息队列、数据库、配置中心、网关、制品库和对象存储等常用基础设施。 > 这些配置主要面向开发和测试环境。部分服务使用 `latest` 镜像、固定容器名、明文默认密码或宽松权限,使用前请按实际环境调整。 ## 目录结构 ```text . ├── docker-compose/ # 可直接启动的服务编排 ├── dockerfile/ # 自定义镜像及其构建上下文 ├── network/ # Docker 网络说明 ├── mirror.md # Docker 镜像加速配置示例 └── LICENSE ``` ## 环境要求 - Docker Engine - Docker Compose v2 - 能够访问所需镜像仓库;部分自定义镜像需要联网下载依赖 确认安装: ```bash docker version docker compose version ``` ## 快速开始 大多数 Compose 文件声明了外部网络 `net-my`,启动前先创建网络: ```bash docker network create -d bridge net-my ``` 如果网络已经存在,创建命令报错可以忽略,或先查看: ```bash docker network ls ``` 每个 Compose 栈建议在其所在目录执行。例如启动 MySQL: ```bash cd docker-compose/db/mysql docker compose -f docker-compose.yml up -d docker compose -f docker-compose.yml ps ``` 查看日志和停止服务: ```bash docker compose -f docker-compose.yml logs -f docker compose -f docker-compose.yml down ``` 启动前可先检查最终配置: ```bash docker compose -f docker-compose.yml config ``` ## Compose 服务清单 ### 应用与开发工具 | 服务 | Compose 文件 | 容器/镜像 | 宿主端口 | | ------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------- | ----------------------------- | | Java 应用 | [docker-compose/jar/docker-compose.yml](docker-compose/jar/docker-compose.yml) | `app-store` / `openjdk:17-ea` | `9023`, `40005` | | Java 应用 slim 变体 | [docker-compose/jar/docker-compose-jdk-slim.yml](docker-compose/jar/docker-compose-jdk-slim.yml) | `app-store` / `openjdk:17-ea` | `9023`, `40005` | | Jenkins | [docker-compose/jenkins/docker-compose.yml](docker-compose/jenkins/docker-compose.yml) | `jenkins` / `jenkins/jenkins:lts` | `8080`, `50000` | | KIE Sandbox | [docker-compose/kie-sandbox/docker-compose.yaml](docker-compose/kie-sandbox/docker-compose.yaml) | Sandbox、Extended Services、CORS Proxy | `9090`, `21346`, `7081` | Java 应用 Compose 会挂载 `docker-compose/jar/app_home`,其中的 `jar/` 用于存放应用 JAR 文件。两个 JAR 编排文件不能同时启动,因为宿主端口相同。 KIE Sandbox 默认访问地址为 [http://localhost:9090](http://localhost:9090)。更完整的构建和环境变量说明见 [KIE Sandbox README](docker-compose/kie-sandbox/README.md)。 ### 消息队列 | 服务 | Compose 文件 | 镜像 | 宿主端口 | | ----------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------ | | Kafka + Kafka UI | [docker-compose/mq/kafka/docker-compose.yml](docker-compose/mq/kafka/docker-compose.yml) | `apache/kafka:4.0.1`、`provectuslabs/kafka-ui:latest` | Kafka`9092`、`9093`;UI `8080` | | RabbitMQ 3.12 | [docker-compose/mq/rabbitmq/rabbitmq3.12/docker-compose.yml](docker-compose/mq/rabbitmq/rabbitmq3.12/docker-compose.yml) | `rabbitmq:3.12-management` | `5672`, `15672` | | RabbitMQ 3.13 | [docker-compose/mq/rabbitmq/rabbitmq3.13/docker-compose.yml](docker-compose/mq/rabbitmq/rabbitmq3.13/docker-compose.yml) | `rabbitmq:3.13-management` | `5672`, `15672` | | RabbitMQ 4.2/4.21 | [docker-compose/mq/rabbitmq/rabbitmq4.21/docker-compose.yml](docker-compose/mq/rabbitmq/rabbitmq4.21/docker-compose.yml) | `rabbitmq:4-management` | `5672`, `15672` | | RabbitMQ 4.3 | [docker-compose/mq/rabbitmq/rabbitmq4.3/docker-compose.yml](docker-compose/mq/rabbitmq/rabbitmq4.3/docker-compose.yml) | `rabbitmq:4-management` | `5672`, `15672` | RabbitMQ 各版本使用相同宿主端口,同一时间通常只启动一个版本。Kafka 数据保存在命名卷 `kafka-data` 中;对外广播地址默认为 `localhost:9092`,远程客户端使用时需要修改 `KAFKA_ADVERTISED_LISTENERS`。 ### 数据库与中间件 | 服务 | Compose 文件 | 镜像 | 宿主端口 | 说明 | | ---------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------ | ---------------------------- | ---------------------------- | | MySQL 8.0 | [docker-compose/db/mysql/docker-compose.yml](docker-compose/db/mysql/docker-compose.yml) | `mysql:8.0.33` | `3306` | 常规配置 | | MySQL 8.0 限制版 | [docker-compose/db/mysql/docker-compose-8.0-limit.yml](docker-compose/db/mysql/docker-compose-8.0-limit.yml) | `mysql:8.0.33` | `3306` | 内存限制约 700 MB | | MySQL 8.4.10 | [docker-compose/db/mysql/docker-compose-810.yml](docker-compose/db/mysql/docker-compose-810.yml) | `mysql:8.4.10` | `3306` | jemalloc 与插件相关配置 | | Nacos | [docker-compose/cloud/nacos/docker-compose.yaml](docker-compose/cloud/nacos/docker-compose.yaml) | `nacos/nacos-server:v3.2.3` | `8080`, `8848`, `9848` | 依赖外部 MySQL | | PostgreSQL | [docker-compose/db/postgres/docker-compose.yml](docker-compose/db/postgres/docker-compose.yml) | `postgres:latest` | `25432` | | | Redis | [docker-compose/db/redis/docker-compose.yml](docker-compose/db/redis/docker-compose.yml) | `redis:latest` | `6379` | 使用`redis.conf` | | Seata Server | [docker-compose/cloud/seata-server/docker-compose.yml](docker-compose/cloud/seata-server/docker-compose.yml) | `seataio/seata-server:2.5.0` | `7091`, `8091` | 注册中心和配置中心指向 Nacos | | Sentinel | [docker-compose/cloud/sentinel/docker-compose.yml](docker-compose/cloud/sentinel/docker-compose.yml) | `eclipse-temurin:21-jre` | `8858` | 使用挂载的启动脚本 | MySQL 的三个编排文件使用相同宿主端口,不能同时启动。Nacos 使用 MySQL 时,请先创建数据库 `nacos_config` 并导入 [docker-compose/cloud/nacos/mysql-schema.sql](docker-compose/cloud/nacos/mysql-schema.sql),然后确认 MySQL 容器在 `net-my` 中可通过主机名访问。Nacos 的具体步骤见 [nacos/readme.md](docker-compose/cloud/nacos/readme.md)。 ### 基础设施与存储 | 服务 | Compose 文件 | 镜像 | 宿主端口 | | ------ | ----------------------------------------------------------------------------------- | -------------------------- | -------------------------------------- | | Nexus | [docker-compose/nexus/docker-compose.yml](docker-compose/nexus/docker-compose.yml) | `sonatype/nexus3:latest` | `8081`, `8082`, `8083`, `8084` | | Nginx | [docker-compose/nginx/docker-compose.yml](docker-compose/nginx/docker-compose.yml) | `nginx:latest` | `80`, `443` | | RustFS | [docker-compose/rustfs/docker-compose.yml](docker-compose/rustfs/docker-compose.yml) | `fs:1.0.0` | `9000`, `9001` | RustFS Compose 使用的 `fs:1.0.0` 镜像来源未在本仓库中定义,请确认该镜像已经存在或替换为可用镜像。 ## 自定义镜像 Dockerfile 应以所在目录作为构建上下文: | 目录 | 用途 | | ----------------------------------------------------------- | ----------------------------------------------- | | [dockerfile/consul](dockerfile/consul) | Consul 1.21.1 Alpine 镜像 | | [dockerfile/jdk](dockerfile/jdk) | 通用 Java 应用启动镜像 | | [dockerfile/jdk/ubuntu%20/17]() | Java 17 Ubuntu Jammy 运行时 | | [dockerfile/jdk/ubuntu%20/21]() | Java 21 Ubuntu Jammy 运行时 | | [dockerfile/jdk/ubuntu%20/25]() | Java 25 Ubuntu Jammy 运行时 | | [dockerfile/mq/rabbitmq-3.12](dockerfile/mq/rabbitmq-3.12) | RabbitMQ 3.12,含 MQTT、Web MQTT 和延迟消息插件 | | [dockerfile/mq/rabbitmq-3.13](dockerfile/mq/rabbitmq-3.13) | RabbitMQ 3.13,含 MQTT、Web MQTT 和延迟消息插件 | | [dockerfile/mq/rabbitmq-4.2](dockerfile/mq/rabbitmq-4.2) | RabbitMQ 4.x 自定义镜像 | | [dockerfile/nginx](dockerfile/nginx) | 带 zstd 动态模块的 Nginx | | [dockerfile/rustfs](dockerfile/rustfs) | 初始化 RustFS 数据和日志目录 | | [dockerfile/sentinel](dockerfile/sentinel) | Sentinel Dashboard 镜像及 Compose | 示例: ```bash cd dockerfile/consul docker build -t consul:1.21.1 -f dockerfile . cd ../mq/rabbitmq-3.13 docker build -t rabbitmq:3.13-custom -f dockerfile . cd ../../nginx docker build -t nginx:zstd -f dockerfile . ``` Sentinel slim 镜像需要构建上下文中存在 `sentinel-dashboard-1.8.8.jar`: ```bash cd dockerfile/sentinel docker build -t sentinel:slim -f Dockerfile.slim . ``` ## 常用文档 - [Docker 镜像加速配置](mirror.md) - [Docker 网络说明](network/network.md) - [MySQL 压力测试]() - [MySQL 插件与 jemalloc](docker-compose/db/mysql/plugin.md) - [Sentinel Dashboard 说明](dockerfile/sentinel/sentinel.md) ## 注意事项 - 不要同时启动使用相同宿主端口的服务变体,例如多个 MySQL、RabbitMQ、Jenkins、Kafka UI 或 Nacos。 - 外部网络必须先创建;RabbitMQ 3.12 使用 `net-dx`,其余大多数服务使用 `net-my`。 - Nacos、Seata 和 MySQL 的启动顺序与连接配置需要由使用者确认,Compose 未覆盖所有跨栈依赖。 - 启动前检查挂载文件和目录是否存在,尤其是 MySQL 配置、Nginx 配置、Redis 配置、应用 JAR 与启动脚本。 - 生产环境请固定镜像版本,移除默认密码,限制暴露端口,并重新评估 `privileged`、文件权限和数据卷权限。