Docker学习之使用Dockerfile创建CentOS7.8.2003基础镜像下nginx-rtmp-ffmpeg流服务镜像

文章目录

  • Dockerfile创建CentOS7.8.2003基础镜像下nginx-rtmp-ffmpeg流服务镜像
    • 创建镜像
      • 编写Dockerfile文件
      • 创建Dockerfile执行目录及相关文件
      • 执行命令``docker build``,运行Dockerfile
      • 镜像创建成功
    • 验证镜像
      • 启动镜像创建容器
      • 浏览器访问http与https
      • 推拉流测试
        • OBS配置
        • OBS推流
        • 推流文件
        • VLC配置
        • VLC拉流
    • 保存镜像至Docker Hub
      • 退出原登录账号
      • 登录Docker Hub
      • 推送镜像至Docker Hub
      • 拉取Docker Hub镜像
    • 保存镜像至阿里云镜像服务器
      • 网页登录阿里云镜像网站
      • 创建命名空间
      • 创建镜像仓库
      • 退出原登录地址及账号并登录阿里镜像服务器
      • 重命名镜像
      • 将镜像推送到Registry

Dockerfile创建CentOS7.8.2003基础镜像下nginx-rtmp-ffmpeg流服务镜像

创建镜像

为了方便镜像的创建,比如缩小镜像体积、更改配置等,现在使用Dockerfile文件创建镜像。

编写Dockerfile文件

针对基于CentOS7.8.2003基础镜像下创建nginx-rtmp-ffmpeg流服务镜像我的Dockerfile文件如下:

FROM centos:7.8.2003

LABEL author xnz <[email protected]>

ENV NGINX_VERSION 1.18.0
ENV NGINX_RTMP_VERSION 1.2.1
ENV FFMPEG_VERSION 2.8.15

# Mapping Port
EXPOSE 1935
EXPOSE 80
EXPOSE 443


# FFmpeg.  
# Install EPEL Release because the installation needs to use another REPO source
# Install Nux-Dextop source
# Install FFmpeg
RUN yum install -y epel-release --nogpgcheck \
	&& rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro \
	&& rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm \
	&& yum install ffmpeg ffmpeg-devel -y


# Nginx And Nginx-rtmp-module.
# Build dependencies
# Install wget
# Download nginx and nginx-rtmp-module
# Install nginx and nginx-rtmp-module
# Cleanup.
RUN yum -y install gcc gcc-c++ make zlib zlib-devel openssl openssl-devel pcre pcre-devel pkgconf pkgconfig \
	&& cd /tmp \
	&& mkdir -p ./data/nginx-rtmp-ffmpeg \
	&& cd ./data/nginx-rtmp-ffmpeg/ \
	&& yum -y install wget \
	&& wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \
	&& wget https://github.com/arut/nginx-rtmp-module/archive/v${NGINX_RTMP_VERSION}.tar.gz \
	&& tar -zxf nginx-${NGINX_VERSION}.tar.gz \
	&& tar -zxf v${NGINX_RTMP_VERSION}.tar.gz \
	&& cd nginx-${NGINX_VERSION}/ \
	&& ./configure --prefix=/usr/local/src/nginx  --add-module=../nginx-rtmp-module-${NGINX_RTMP_VERSION} --with-debug --with-http_ssl_module \
	&& make && make install \
	&& cd /usr/local/src/nginx \
	&& mkdir -p ./data/hls \
	&& mkdir certs \
	&& rm -rf /var/cache/* /tmp/* \
	&& yum -y remove gcc*


# COPY NGINX config and static files.
COPY nginx.conf /usr/local/src/nginx/conf
COPY static /usr/local/src/nginx/data/static

# COPY SSL CERT.
COPY certs /usr/local/src/nginx/certs

# Start Nginx.
ENTRYPOINT ["/usr/local/src/nginx/sbin/nginx","-g","daemon off"]
CMD ["-c","/usr/local/src/nginx/conf/nginx.conf"]

Dockerfile语法可参考Docker官网: Dockerfile reference

大佬博文:

使用dockerfile构建nginx镜像 docker部署nginx–dockerfile方法 dockerfile方式创建nginx服务

Dockerfile 中的 COPY 与 ADD 命令

创建Dockerfile执行目录及相关文件

  1. 首先在服务器宿主机创建空目录 nginx-rtmp-ffmpeg-centos7.8.2003

  2. 将Dockerfile文件,以及涉及到的其他文件,如:nginx.conf、S

你可能感兴趣的:(Docker,Nginx,docker,centos,rtmp)