🍋3. Linux 基于 Docker-Compose 部署上线项目
选中新版正文中的对应文字,然后点“定位到这里”。
你好呀, 我是莜莜, 一名练习时长一年的爪哇练习生, 今天给大家带来的是使用 Docker-Compose 部署 Pmhub. 你有没有想过,通过简单的几行命令,就能让你的微服务项目瞬间上线,轻松应对各种复杂的环境配置? 本文将带你走进一个神奇的世界,利用Docker Compose,帮你在云端一键部署微服务。准备好了吗?让我们一同踏上这场轻松而充满乐趣的技术之旅吧!
- 在阅读本文档遇到的任何问题都可以在评论区提出, 看到问题会第一时间回复的.
- 也可以加 pmhub 交流群, 在群里提问, 被回答的效率可能会更高哦, 群里也有很多一起学习pmhub的小伙伴
- 最后祝君成功 !
1. docker-compose.yml 命令全解析
- pmhub-nacos
pmhub-nacos:
# 设置容器名称为:`pmhub-nacos`
container_name: pmhub-nacos
# 使用的镜像及版本
image: nacos/nacos-server:v2.2.3
build:
# 使用 nacos 文件夹里的 dockerfile 文件来构建镜像
context: ./nacos
dockerfile: dockerfile
environment:
# Nacos 单点运行
- MODE=standalone
volumes:
# 挂载日志文件, 如果/nacos/logs文件夹不存在则自动创建
- ./nacos/logs/:/home/nacos/logs
# 挂载/nacos/conf里的配置文件, 配置持久化
- ./nacos/conf/application.properties:/home/nacos/conf/application.properties
ports:
# 端口映射 外部访问端口 : 容器内部端口
- "8848:8848"
- "9848:9848"
- "9849:9849"
# Nacos 依赖 Mysql 运行
depends_on:
- pmhub-mysql
- pmhub-mysql
pmhub-mysql:
# 设置容器名称为:`pmhub-mysql`
container_name: pmhub-mysql
# 使用的镜像及版本
image: mysql:8.0.33
build:
# 使用 mysql 文件夹里的 dockerfile 文件来构建镜像
context: ./mysql
dockerfile: dockerfile
ports:
# 端口映射 外部访问端口 : 容器内部端口
- "33706:3306" # 有经验的开发不会直接暴露3306端口
volumes:
# 配置文件持久化
- ./mysql/conf:/etc/mysql/conf.d
# 日志文件持久化
- ./mysql/logs:/logs
# 数据文件持久化
- ./mysql/data:/var/lib/mysql
# 覆盖默认的 MySQL 启动命令,以提供自定义配置
command: [
# 启动 MySQL 守护进程
'mysqld',
# 设置 InnoDB 缓冲池大小为 80MB,用于调整内存分配,以适应低内存环境
'--innodb-buffer-pool-size=80M',
# 默认字符集设置为 utf8mb4
'--character-set-server=utf8mb4',
# 默认的字符集排序规则为 utf8mb4_unicode_ci
'--collation-server=utf8mb4_unicode_ci',
# 默认时区设置为东八区
'--default-time-zone=+8:00',
# 设置 MySQL 表名的存储方式, 2 表示表名存储为小写,比较时忽略大小写
'--lower-case-table-names=2'
]
environment:
# 启动时要创建的默认数据库名称为 laigeoffer-pmhub
MYSQL_DATABASE: 'laigeoffer-pmhub'
# 设置数据库密码
MYSQL_ROOT_PASSWORD: laigeoffer-pmhub #上线修改为复杂密码,否则很容易被黑
- pmhub-redis
pmhub-redis:
# 设置容器名称为:`pmhub-redis`
container_name: pmhub-redis
# 使用的镜像及版本
image: redis:7.4.0
build:
# 使用 redis 文件夹里的 dockerfile 文件来构建镜像
context: ./redis
dockerfile: dockerfile
ports:
# 端口映射
- "6379:6379"
volumes:
# 配置文件持久化
- ./redis/conf/redis.conf:/home/pmhub/redis/redis.conf
# 数据文件持久化
- ./redis/data:/data
# 自定义配置文件
command: redis-server /home/pmhub/redis/redis.conf
- redis.conf 模板
# Redis 配置文件示例
################################## 常规设置 #####################################
# 绑定的 IP 地址。默认情况下,Redis 绑定到所有 IP 地址。
# 绑定到 localhost 仅允许本地访问(提高安全性)。
#bind 127.0.0.1
# Redis 监听的端口。默认是 6379。
port 6379
# 指定是否以守护进程方式运行。使用 "yes" 可以在后台运行。
# 在 Docker 环境中通常不使用守护进程模式("no")。
daemonize no
# 用于持久化数据的目录
dir /data
# 日志级别,选项有:debug、verbose、notice、warning
loglevel notice
# 日志文件路径。如果不指定,日志输出到标准输出(stdout)。
logfile ""
# pidfile 文件路径,用于记录 Redis 进程 ID。通常在守护进程模式下使用。
pidfile /var/run/redis_6379.pid
################################# 安全设置 #####################################
# 设置 Redis 访问密码。启用后,客户端连接需要 AUTH 密码验证。
#requirepass yourpassword
################################# 数据持久化 ####################################
# 是否启用 RDB 持久化策略。默认开启,使用 RDB 文件保存数据快照。
save 900 1 # 如果 900 秒内至少有 1 个 key 改变,则保存快照
save 300 10 # 如果 300 秒内至少有 10 个 key 改变,则保存快照
save 60 10000 # 如果 60 秒内至少有 10000 个 key 改变,则保存快照
# RDB 文件名
dbfilename dump.rdb
# RDB 文件存储路径,通常与 `dir` 参数一致
# dir /data
# 是否在保存 RDB 文件期间压缩数据
rdbcompression yes
################################# AOF 持久化 ###################################
# 是否启用 AOF 持久化。AOF 持久化记录每个写操作,可以在重新启动时重建数据集。
# 默认关闭,但可以通过以下命令启用。
appendonly no
# AOF 文件名
appendfilename "appendonly.aof"
# AOF 同步频率:
# no: 每秒写入磁盘(性能和安全的折中)
# always: 每次写操作后立即写入磁盘(最安全但性能最差)
# everysec: 每秒写入磁盘(推荐)
appendfsync everysec
################################## 内存管理 ####################################
# 最大可用内存设置。当达到最大内存时,Redis 将根据 maxmemory-policy 设置淘汰策略。
#maxmemory 256mb
# 超过最大内存限制时的淘汰策略:
# noeviction: 达到内存限制时不再处理写操作
# allkeys-lru: 使用 LRU 算法删除所有 key(推荐)
# volatile-lru: 仅对设置了过期时间的 key 使用 LRU 算法
#allkeys-lru
############################### 客户端管理 #####################################
# 最大客户端连接数。如果超过此数量,将拒绝新的连接。
# 0 表示无限制。
maxclients 10000
# 客户端连接的超时时间(以秒为单位)。0 表示不超时。
timeout 0
################################# 高级配置 #####################################
# Redis 复制设置(主从复制)。设置 `slaveof` 为主服务器的 IP 和端口。
# slaveof
# Sentinel 监控 Redis 主从架构的配置文件
# sentinel.conf
################################# 集群配置 #####################################
# 如果 Redis 作为集群使用,设置集群的节点配置文件名。
#cluster-enabled yes
#cluster-config-file nodes.conf
#cluster-node-timeout 15000
################################# Lua 脚本配置 #################################
# Lua 脚本的最大执行时间(毫秒)。防止阻塞 Redis 服务器。
lua-time-limit 5000
################################ 其他配置 ######################################
# 设置数据库数量。每个数据库有独立的 key 空间。
databases 16
# 开启键盘遥控器支持(需要额外的模块支持)
# activedefrag yes
# Redis 服务器的名称,用于日志输出识别
# server_name redis_server
- pmhub-gateway
pmhub-gateway:
# 设置容器名称为:`pmhub-gateway`
container_name: pmhub-gateway
build:
# 使用 gateway 文件夹里的 dockerfile 文件来构建镜像
context: pmhub/gateway
dockerfile: dockerfile
ports:
# 端口映射
- "6880:6880"
environment:
# 指定 Spring 环境配置文件为 dev
- SPRING_PROFILES_ACTIVE=dev
# 指定 Nacos 服务发现的服务器地址
- SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=http://pmhub-nacos:8848
# 设置 Nacos 服务发现的用户名和密码
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
# 设置 Nacos 配置管理的服务器地址
- SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR=http://pmhub-nacos:8848
# 设置 Nacos 配置管理的用户名和密码
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
# 设置 Redis 的主机和端口
- SPRING_REDIS_HOST=pmhub-redis
- SPRING_REDIS_PORT=6379
depends_on:
# 指定服务的依赖关系, 依赖 redis 和 nacos
- pmhub-redis
- pmhub-nacos
links:
# 允许 pmhub-gateway 容器访问 pmhub-redis 和 pmhub-nacos 容器
- pmhub-redis
- pmhub-nacos
- pmhub-auth
pmhub-auth:
# 设置容器名称为:`pmhub-auth`
container_name: pmhub-auth
build:
# 使用 auth 文件夹里的 dockerfile 文件来构建镜像
context: pmhub/auth
dockerfile: dockerfile
ports:
# 端口映射
- "6800:6800"
environment:
# 指定 Spring 环境配置文件为 dev
- SPRING_PROFILES_ACTIVE=dev
# 指定 Nacos 服务发现的服务器地址
- SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=http://pmhub-nacos:8848
# 设置 Nacos 服务发现的用户名和密码
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
# 指定 Nacos 配置管理的服务器地址
- SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR=http://pmhub-nacos:8848
# 设置 Nacos 配置管理的用户名和密码
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
# 设置 Redis 的主机和端口
- SPRING_RE...未能定位到原文的划线
已加入星球,可直接知识星球授权登录
二哥编程星球目前包含:
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复