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 만들기