# deployment **Repository Path**: opandora/deployment ## Basic Information - **Project Name**: deployment - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-10 - **Last Updated**: 2026-02-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MediaBridge Docker 部署说明 本目录包含 MediaBridge 的 Docker 编排与构建配置,用于运行 **media_bridge_gateway** 与 **media_bridge_media** 两个服务。 ## 服务说明 | 服务名 | 容器名 | 可执行文件来源 | 端口 | |--------|--------|----------------|------| | media_bridge_gateway | media_bridge_gateway | `./cmd/gateway/` | 8000 (web)、1935 (RTMP)、8554 (RTSP) | | media_bridge_media | media_bridge_media | `./cmd/media/` | 10111 | - **gateway**:网关服务,提供 Web API、RTMP、RTSP 接入。 - **media**:媒体服务,依赖 glibc 基础镜像(如含 ffmpeg 的镜像),端口 10111。 ## 前置条件 - 已安装 Docker 与 Docker Compose。 - 在**项目根目录**下已生成 Linux 二进制(见下方「构建」)。 ## 构建 镜像使用宿主机预编译的二进制,构建前需先在项目根目录编译 Linux 可执行文件: ```bash # 在项目根目录执行 GOOS=linux go build -o docker/app_gateway ./cmd/gateway/ GOOS=linux go build -o docker/app_media ./cmd/media/ ``` 若二进制为**动态链接**(依赖 glibc),需使用带 glibc 的基础镜像(如 Debian/Ubuntu);若为**静态链接**(`CGO_ENABLED=0`),gateway 可使用 Alpine。 然后构建镜像(仍在项目根目录): ```bash docker compose -f docker/docker-compose.yaml build ``` 也可使用脚本(会先编译再构建,需在 `build.sh` 中取消注释 `go build` 两行): ```bash ./docker/build.sh ``` ## 启动、停止、重启 以下命令均在**项目根目录**执行: ```bash # 启动两个服务(后台) docker compose -f docker/docker-compose.yaml up -d # 停止两个服务 docker compose -f docker/docker-compose.yaml down # 重启两个服务 docker compose -f docker/docker-compose.yaml restart ``` 仅操作单个服务: ```bash # 仅启动/停止/重启 gateway docker compose -f docker/docker-compose.yaml up -d media_bridge_gateway docker compose -f docker/docker-compose.yaml stop media_bridge_gateway docker compose -f docker/docker-compose.yaml restart media_bridge_gateway # 仅启动/停止/重启 media docker compose -f docker/docker-compose.yaml up -d media_bridge_media docker compose -f docker/docker-compose.yaml stop media_bridge_media docker compose -f docker/docker-compose.yaml restart media_bridge_media ``` ## 配置 - **gateway**:配置文件挂载为 `docker/gateway.yaml` → 容器内 `/app/gateway.yaml`。 - **media**:配置文件挂载为 `docker/media.yaml` → 容器内 `/app/media.yaml`。 修改 `docker/gateway.yaml` 或 `docker/media.yaml` 后,重启对应服务即可生效。 ## 端口 | 服务 | 端口 | 说明 | |------|------|------| | media_bridge_gateway | 8000 | Web API | | media_bridge_gateway | 1935 | RTMP | | media_bridge_gateway | 8554 | RTSP | | media_bridge_media | 10111 | 媒体服务 | compose 中已使用 `0.0.0.0:端口:端口`,宿主机及同网段机器均可访问。 ## 推送镜像 默认镜像名为 `mediabridge/gateway:latest`、`mediabridge/media:latest`。推送到 Docker Hub 时需使用你有权限的命名空间: ```bash # 方式一:打 tag 后推送 docker tag mediabridge/gateway:latest YOUR_USERNAME/gateway:latest docker tag mediabridge/media:latest YOUR_USERNAME/media:latest docker push YOUR_USERNAME/gateway:latest docker push YOUR_USERNAME/media:latest # 方式二:构建时指定前缀(注意变量名为 DOCKER_IMAGE_PREFIX,不是 PREFI) export DOCKER_IMAGE_PREFIX=YOUR_USERNAME docker compose -f docker/docker-compose.yaml build docker push YOUR_USERNAME/gateway:latest docker push YOUR_USERNAME/media:latest ``` ## 文件说明 | 文件 | 说明 | |------|------| | `Dockerfile` | 多阶段构建:gateway 使用 Alpine + 宿主机二进制;media 使用自定义基础镜像(如含 ffmpeg)+ 宿主机二进制。 | | `docker-compose.yaml` | 服务定义、端口、卷挂载。 | | `build.sh` | 可选脚本:在项目根目录编译二进制并执行 compose build。 | | `gateway.yaml` | gateway 配置(由 `config/gateway.yaml` 复制而来,可挂载进容器)。 | | `media.yaml` | media 配置(由 `config/media.yaml` 复制而来,可挂载进容器)。 |