Docker部署SRS

介绍

Docker是一个开源的容器化平台,可以帮助开发者将应用程序及其依赖打包成一个独立的容器,以便在不同的环境中部署和运行。SRS(Simple RTMP Server)是一个功能强大的开源流媒体服务器,支持RTMP、HLS和HTTP-FLV等流媒体协议。本文将介绍如何使用Docker部署SRS。

前提条件

在开始之前,你需要安装Docker和Docker Compose。如果你还没有安装,可以参考[Docker官方文档](

准备工作

首先,我们需要创建一个目录,用于存放SRS的配置文件和日志文件。

mkdir srs
cd srs

在该目录下,创建一个名为srs.conf的配置文件,用于配置SRS的参数。以下是一个简单的配置示例:

# srs.conf

listen              1935;
max_connections     1000;
daemon              off;
pid                 ./objs/srs.pid;
http_api {
    enabled         on;
    listen          1985;
}

构建Docker镜像

srs目录下,创建一个名为Dockerfile的文件,用于构建SRS的Docker镜像。

# Dockerfile

FROM alpine:latest

RUN apk update && apk add git build-base && \
    git clone  && \
    cd srs/trunk && \
    ./configure && make

EXPOSE 1935
EXPOSE 1985

ENTRYPOINT ["./srs/trunk/objs/srs", "-c", "./srs.conf"]

Dockerfile中,我们使用了Alpine Linux作为基础镜像,并安装了所需的构建工具和依赖。然后,我们从GitHub上克隆了SRS的代码,并在代码所在的目录进行了编译。最后,我们将SRS的默认端口暴露出来,并指定了入口命令。

使用以下命令构建Docker镜像:

docker build -t srs .

编写Docker Compose文件

srs目录下,创建一个名为docker-compose.yml的文件,用于启动SRS的Docker容器。

# docker-compose.yml

version: '3'

services:
  srs:
    build: .
    ports:
      - "1935:1935"
      - "1985:1985"
    volumes:
      - ./srs.conf:/srs.conf
      - ./logs:/srs/trunk/objs/logs

docker-compose.yml中,我们定义了一个名为srs的服务,使用上一步构建的Docker镜像,并将SRS的默认端口映射到宿主机上。我们还使用了volumes指令,将配置文件和日志文件挂载到容器内的相应路径。

启动SRS

使用以下命令启动SRS的Docker容器:

docker-compose up -d

现在,你可以通过rtmp://localhost/live/stream来推流到SRS,并通过http://localhost:1985/stat来查看SRS的状态信息。

总结

本文介绍了如何使用Docker部署SRS。首先,我们创建了一个目录,并在该目录下创建了SRS的配置文件。然后,我们构建了一个包含SRS代码的Docker镜像,并在其中指定了入口命令。最后,我们使用Docker Compose启动了SRS的Docker容器。现在,你可以在任意环境中轻松部署和运行SRS了。

序列图

以下是将流程整理为序列图的示例:

sequenceDiagram
    participant User
    participant Docker
    participant SRS

    User->>Docker: 构建镜像
    Docker->>Docker: 下载代码并编译
    Docker->>Docker: 构建镜像
    Docker-->>User: 镜像构建完成
    
    User->>Docker: 启动容器
    Docker->>SRS: 启动SRS
    Docker-->>User: 容器启