Dockerfile

# Install dependencies
RUN apt-get update && \\
    apt-get install -y ca-certificates openssl libssl-dev && \\
    rm -rf /var/lib/apt/lists/*

RUN set -x \\
# create nginx user/group
    && useradd -r nginx

# Download and decompress Nginx
RUN mkdir -p /tmp/build/nginx && \\
    cd /tmp/build/nginx && \\
    wget -O ${NGINX_VERSION}.tar.gz <https://nginx.org/download/${NGINX_VERSION}.tar.gz> && \\
    tar -zxf ${NGINX_VERSION}.tar.gz

# Download and decompress RTMP module
RUN mkdir -p /tmp/build/nginx-rtmp-module && \\
    cd /tmp/build/nginx-rtmp-module && \\
    wget -O nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION}.tar.gz <https://github.com/arut/nginx-rtmp-module/archive/v${NGINX_RTMP_MODULE_VERSION}.tar.gz> && \\
    tar -zxf nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION}.tar.gz && \\
    cd nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION}

# Build and install Nginx
# The default puts everything under /usr/local/nginx, so it's needed to change
# it explicitly. Not just for order but to have it in the PATH
RUN cd /tmp/build/nginx/${NGINX_VERSION} && \\
    ./configure \\
        --sbin-path=/usr/local/sbin/nginx \\
        --conf-path=/etc/nginx/nginx.conf \\
        --error-log-path=/var/log/nginx/error.log \\
        --pid-path=/var/run/nginx/nginx.pid \\
        --lock-path=/var/lock/nginx/nginx.lock \\
        --http-log-path=/var/log/nginx/access.log \\
        --http-client-body-temp-path=/tmp/nginx-client-body \\
        --with-http_ssl_module \\
        --with-threads \\
        --with-ipv6 \\
        --add-module=/tmp/build/nginx-rtmp-module/nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION} && \\
    make -j $(getconf _NPROCESSORS_ONLN) && \\
    make install && \\
    mkdir /var/lock/nginx && \\
    rm -rf /tmp/build

# Forward logs to Docker
RUN ln -sf /dev/stdout /var/log/nginx/access.log && \\
    ln -sf /dev/stderr /var/log/nginx/error.log

# Set up config file
COPY nginx.conf /etc/nginx/nginx.conf
COPY index.html /srv/www/index.html

EXPOSE 1935 80
CMD ["nginx", "-g", "daemon off;"]

nginx.conf

user  nginx;
worker_processes  auto;
rtmp_auto_push on;

events {
    worker_connections  1024;
}

rtmp {

  server {
    listen 1935;

    application live {
      live on;

      hls on;
      hls_path /srv/www;
      hls_fragment 1s;

      hls_keys on;
      hls_key_path /srv/www/keys;
      hls_key_url /keys/;
      hls_fragments_per_key 10;
    }
  }
}

http {
  include mime.types;
  default_type application/octet-stream;
  access_log /var/log/nginx/access.log;

  map $sent_http_content_type $expires {
    default 1d;
    application/vnd.apple.mpegurl epoch;
  }

  server {
    listen 80;

    location / {
      add_header 'Access-Control-Allow-Origin' '*' always;
      add_header 'Access-Control-Expose-Headers' '*' always;
      root /srv/www;
      expires -1;
      try_files $uri $uri/ =204;
    }

  }
}
docker run -d -p 1935:1935 -p 80:80 -v ~/letsencrypt:/etc/letsencrypt -v ~/conf:/etc/nginx --name media-sever jihoho/nginx-media-server

참고

https://github.com/tiangolo/nginx-rtmp-docker

Docker - NGINX MEDIA SERVER 만들기