在本篇博客中,我们将深入探讨如何利用Docker构建Nginx、FastDFS以及RTMP的集成环境。我们将从Dockerfile的编写开始,一步步搭建起这个环境,并说明如何使用这个镜像来部署服务。
FROM centos:7
LABEL maintainer "qiao"
# 更新系统并安装 Vim,安装编译工具和开发库
RUN yum update -y && yum install -y gcc gcc-c++ make cmake sysvinit-tools pcre pcre-devel unzip zlib zlib-devel openssl openssl-devel libevent libevent-devel perl net-tools
ENV NGINX_VERSION="1.24.0"
# 设置容器中文,否则中文乱码
ENV LANG C.UTF-8
# 设置时区
ENV TZ Asia/Shanghai
# 拷贝nginx安装包和fastdfs安装包
COPY nginx-${NGINX_VERSION}.tar.gz /usr/local/nginx-${NGINX_VERSION}.tar.gz
COPY nginx-rtmp-module.tar.gz /usr/local/nginx-rtmp-module.tar.gz
COPY fastdfs-nginx-module-1.22.zip /usr/local/fastdfs/fastdfs-nginx-module-1.22.zip
COPY libfastcommon-1.0.45.tar.gz /usr/local/fastdfs/libfastcommon-1.0.45.tar.gz
COPY fastdfs-6.07.zip /usr/local/fastdfs/fastdfs-6.07.zip
COPY entrypoint.sh /usr/bin/
# 复制libfdfsclient.so文件到【usr/lib】目录
COPY libfdfsclient.so /usr/lib/
# 复制 Nginx 配置文件
COPY nginx.conf /etc/nginx/nginx.conf
# 安装
RUN cd /usr/local/fastdfs && tar -zxvf libfastcommon-1.0.45.tar.gz && chmod +x /usr/local/fastdfs/libfastcommon-1.0.45/make.sh && \
cd /usr/local/fastdfs/libfastcommon-1.0.45 && ./make.sh && ./make.sh install && \
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so && ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so && \
cd /usr/local/fastdfs && unzip fastdfs-6.07.zip && chmod +x /usr/local/fastdfs/fastdfs-6.07/make.sh && cd /usr/local/fastdfs/fastdfs-6.07 && \
./make.sh && ./make.sh install && \
cp -f /usr/local/fastdfs/fastdfs-6.07/conf/client.conf /etc/fdfs/client.conf && \
cp -f /usr/local/fastdfs/fastdfs-6.07/conf/tracker.conf /etc/fdfs/tracker.conf && \
cp -f /usr/local/fastdfs/fastdfs-6.07/conf/storage.conf /etc/fdfs/storage.conf && \
cp -f /usr/local/fastdfs/fastdfs-6.07/conf/http.conf /etc/fdfs/ && \
cp -f /usr/local/fastdfs/fastdfs-6.07/conf/mime.types /etc/fdfs/ && \
chmod 777 -R /usr/local && \
cd /usr/local && tar -zxvf nginx-rtmp-module.tar.gz && \
cd /usr/local && tar -zxvf nginx-${NGINX_VERSION}.tar.gz && \
cd /usr/local/fastdfs && unzip fastdfs-nginx-module-1.22.zip && \
cp /usr/local/fastdfs/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/ && \
cd /usr/local/nginx-${NGINX_VERSION} && \
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs/fastdfs-nginx-module-1.22/src/ --add-module=/usr/local/nginx-rtmp-module --with-stream && \
make && make install && chmod a+x /usr/bin/entrypoint.sh && chmod a+x /etc/rc.d/init.d/fdfs_trackerd && chmod a+x /etc/rc.d/init.d/fdfs_storaged && \
rm -rf /usr/local/nginx-${NGINX_VERSION}.tar.gz && \
rm -rf /usr/local/nginx-rtmp-module.tar.gz && \
rm -rf /usr/local/fastdfs/fastdfs-nginx-module-1.22.zip && \
rm -rf /usr/local/fastdfs/libfastcommon-1.0.45.tar.gz && \
rm -rf /usr/local/fastdfs/fastdfs-6.07.zip
# 暴露 RTMP 和 HTTP 端口
EXPOSE 22122 23000 80 1935
# 设置工作目录
WORKDIR /usr/local/nginx
# 启动脚本
ENTRYPOINT ["/usr/bin/entrypoint.sh"]
#!/bin/sh
#set -e
echo "start fastdfs"
/etc/rc.d/init.d/fdfs_trackerd restart
echo $?
sleep 3
/etc/rc.d/init.d/fdfs_storaged restart
echo $?
sleep 3
/usr/local/nginx/sbin/nginx
echo $?
tail -f /usr/local/nginx/logs/access.log
:::info 在dockerfile文件目录下执行下面命令构建~ :::
docker build -t mynginx .
:::info 先登录dockerhub,按提示输入账号密码 :::
docker login
:::info 先在本地打远程标记镜像,然后推送 :::
docker tag mynginx:1.24.0 q08240/mynginx:1.24.0
docker push q08240/mynginx:1.24.0
:::info 使用docker pull 直接拉取 :::
docker pull q08240/mynginx:1.24.0
docker run -d \
--name nginx \
--hostname nginx \
-p 80:80 \
-p 3009:3009 \
-p 22122:22122 \
-p 23000:23000 \
-p 1935:1935 \
--privileged=true \
-v /opt/dist:/opt/dist \
-v /opt/topology/dist:/opt/topology/dist \
-v /root/image:/root/image \
-v /usr/local/nginx/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf \
-v /usr/local/fastdfs/fastdfs-6.07/storage/data:/usr/local/fastdfs/fastdfs-6.07/storage/data \
-v /etc/fdfs/client.conf:/etc/fdfs/client.conf \
-v /etc/fdfs/tracker.conf:/etc/fdfs/tracker.conf \
-v /etc/fdfs/storage.conf:/etc/fdfs/storage.conf \
-v /etc/fdfs/mod_fastdfs.conf:/etc/fdfs/mod_fastdfs.conf \
-v /etc/fdfs/http.conf:/etc/fdfs/http.conf \
-v /etc/fdfs/mime.types:/etc/fdfs/mime.types \
q08240/mynginx:1.24.0
相关配置文件放到宿主机中,启动服务的时候,把配置文件信息挂载到容器中,修改宿主机的配置文件即可~ 文件如下:
文件目录 | 说明 |
---|---|
/opt/dist | 前端项目目录 |
/opt/topology/dist | topology前端项目目录 |
/root/image | 图片目录 |
/usr/local/nginx/conf/nginx.conf | nginx配置文件 |
/usr/local/fastdfs/fastdfs-6.07/storage/data | fastdfs数据目录 |
/etc/fdfs/client.conf | client.conf |
/etc/fdfs/tracker.conf | tracker.conf |
/etc/fdfs/storage.conf | storage.conf |
/etc/fdfs/http.conf | http.conf |
/etc/fdfs/mime.types | mime.types |
注意:上述配置文件跟宿主机安装的配置文件相同,复制一份修改ip等先关配置即可~
通过本篇博客的介绍,我们学习了如何利用Docker构建Nginx、FastDFS以及RTMP的集成环境,并进行了相应的配置和部署。这为项目的运行提供了便利,提高了开发和部署的效率。
希望本文对您有所帮助,如果有任何疑问或建议,欢迎留言讨论!😊