中转服务容器化Docker‑Compose一键部署生产模板
中转服务通常承担流量转发、API 代理或内网穿透职责,手动部署时环境差异大、重启麻烦,换成 Docker-Compose 后只需一份 docker-compose.yml 就能在任意 Linux 服务器上拉起整套服务。
本文按生产环境标准给出可直接套用的模板,并讲清前置条件、部署步骤、验证方法和高频踩坑点,零基础用户照做即可。
部署前的三件事
开始操作前先确认三件事:
- 服务器已安装 Docker 和 Docker-Compose。执行
docker -v和docker-compose -v能看到版本号即可;若未安装,参考 Docker 官方文档或宝塔面板的 Docker 管理器一键安装。 - 端口已预留。中转服务默认使用
8080,如果用 Nginx 反代,注意不要和 80/443 冲突。 - 数据目录已规划。建议在
/opt/relay下统一存放配置和日志,方便备份和迁移。
编写 docker-compose.yml 模板
在 /opt/relay 目录下新建 docker-compose.yml,内容如下:
version: "3.8"
services:
relay:
image: your-registry/relay:latest # 替换为实际镜像地址
container_name: relay
restart: always
ports:
- "8080:8080"
environment:
- TZ=Asia/Shanghai
- LOG_LEVEL=info
- CONFIG_PATH=/data/config.yml
volumes:
- ./config.yml:/data/config.yml:ro
- ./logs:/data/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
配置项说明:
restart: always让容器在异常退出或服务器重启后自动拉起,生产环境必加。healthcheck定期检查服务健康状态,配合服务发现或监控面板使用。logging限制日志体积,避免长期运行撑爆磁盘。- 配置文件通过 volume 挂载进容器,修改后只需
docker-compose restart relay即可生效,不用重新构建镜像。
启动与验证
在 /opt/relay 目录下依次执行:
docker-compose up -d
docker-compose ps
看到 relay 状态为 Up、健康检查为 healthy 就说明启动成功。
接着测试转发功能:
curl -I http://服务器IP:8080/health
返回 200 OK 即正常。
如果使用 Nginx 反代,还要在 Nginx 配置中把域名指向本机 8080 端口,然后执行 nginx -s reload。
常见报错排查
端口被占用:启动时提示 port is already allocated,先执行 ss -lntp | grep 8080 找出占用进程,释放端口或修改宿主机映射端口。
配置挂载无效:确保 config.yml 与 docker-compose.yml 在同一目录,且容器内读取路径和挂载路径完全一致。
否则容器会使用默认配置,导致行为异常。
健康检查失败:镜像里可能没有 curl 命令,会报 exec: "curl": executable file not found。
可将健康检查命令改为 wget -q --spider http://localhost:8080/health 或使用开发语言自带的探活接口。
日志不输出/权限错误:检查宿主机 logs 目录是否具备写权限。
直接 chmod 755 logs 后重启容器通常能解决。
生产环境避坑清单
把下面几个细节处理到位,能省掉后续很多麻烦:
- 固定镜像版本,不要用
latest。部署前锁定到具体 tag(如relay:v2.1.3),避免更新导致意外变更。 - 敏感信息用环境变量或 Docker Secret 管理,不要硬编码在
config.yml中。 - 在云服务器安全组和系统防火墙(
firewalld或ufw)中开放映射端口,否则外部无法访问。 - 定期执行
docker-compose pull获取安全更新,并按镜像维护说明回滚兼容版本。 - 如服务无内置持久化需求,建议在编排文件里关闭不必要的 volume 写入,减少磁盘碎片和备份体积。
模板调整与后续维护
生产环境没有一套配置通吃所有场景:如果你的中转服务需要 Redis 或数据库,在 services 下继续追加对应服务即可,Docker-Compose 会统一管理网络和数据卷。
升级软件时,先备份 /opt/relay 整个目录,再替换镜像 tag 并执行 docker-compose up -d,最后确认健康检查状态。
按照这份模板部署完成后,实际收益是:服务可随服务器重启自愈,日志有上限控制,配置变更可回滚,整个生命周期不再依赖人工手动启停。
若在部署中遇到其他问题,优先查看 docker-compose logs 输出,再结合本次提到的排错思路逐项核对。