806 字
约 2 分钟
8
S15-A03 · 多平台安装与中间件编排

适用读者:要在 Windows/macOS/Linux 上搭同一套环境的人。
前置:S15-J04、S15-J05。
覆盖旧文:318(133) 1244(92) 1245(29) 1246(58) 1247(69) 1248(69) 1272(66) 1273(16) 1274(46) 1276(88) 1277(60) 1278(77) 1279(54) 1240(2) = 859 点(含 S07 移交的 WSL2 卡)。
上一篇:S15-A02 · 容器化部署与 CI/CD
下一篇:S15-X01 · 八股速查。


1. 一句话结论

"多平台一致"的正确解法不是"每个系统各写一套文档",而是"用容器把差异压到 Docker Desktop 一层"。

平台 容器运行时 差异点
Linux 原生 Docker 最直接
Windows Docker Desktop(WSL2 后端) 路径/换行/文件权限
macOS Docker Desktop(虚拟化) 文件挂载性能

2. WSL2:Windows 上跑 Linux 容器的前提

点 说明
启用 wsl --install(Win10 2004+)
后端 Docker Desktop 用 WSL2 而非 Hyper-V
文件性能 代码放 WSL 文件系统(/home/...)比 /mnt/c 快得多
换行 Git 配 core.autocrlf,脚本注意 LF

判据:"构建慢得离谱吗?" 检查代码是否在 /mnt/c——跨文件系统挂载是常见性能杀手。


3. 中间件编排:一套 compose 多处复用

# compose.yaml(开发)
services:
  mysql:   { image: mysql:8.0, environment: [MYSQL_ROOT_PASSWORD=dev], ports: ["3306:3306"] }
  redis:   { image: redis:7-alpine, ports: ["6379:6379"] }
  minio:   { image: minio/minio, command: server /data, ports: ["9000:9000"] }
环境 差异 做法
开发 暴露端口、弱密码 compose.yaml
测试 同开发 继承
生产 不暴露端口、强密码、资源限制 compose.prod.yaml 覆盖
docker compose -f compose.yaml -f compose.prod.yaml up -d

判据:"这个差异是"环境"还是"业务"?" 环境差异用覆盖文件,别复制两份 compose。


4. 中间件安装的共性(覆盖 278/1276/1277/1279 等)

中间件 关键点
MySQL 数据卷 + --character-set-server=utf8mb4
Redis 数据卷 + appendonly yes(S12-B04)
MinIO 端口 + 子域名 + HTTPS(反向代理,A01)
ZooKeeper 单机开发足够,集群需奇数
Jenkins 数据卷 + 权限(挂 docker.sock 有风险)

"为什么不建议挂 docker.sock":等于把宿主机 root 权限交给容器里的 CI——生产要用独立 runner。


5. 五个误区

误区 真相
"每个系统装一遍就行" 版本漂移,环境不一致
"WSL 里代码放 /mnt/c 无所谓" 构建会慢数倍
"开发和生产用同一份 compose" 生产不该暴露端口/弱密码
"Jenkins 挂 docker.sock 很方便" 权限过高
"k8s 能替代 compose" 规模不同,别过度设计

6. 自检(架构师版)

  1. 三平台容器运行时的差异?
  2. WSL2 的文件性能陷阱?
  3. 开发/生产 compose 怎么复用?
  4. 挂 docker.sock 的风险?
  5. 什么规模才需要 k8s?

7. 下一篇

S15-X01 · Linux/Docker 八股速查

最后一篇是附录索引,随后进入 S17(分布式与消息队列)。


本篇属于系列《S15 · Linux 与运维》。旧文来源:A-318/1244/1245/1246/1247/1248/1272/1273/1274/1276/1277/1278/1279/1240 + S07 移交的 WSL2 卡(A-320)。

S15-A03 · 多平台安装与中间件编排
https://www.clxhxhhr.top/posts/5403/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。