前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >探索Nginx+FastDFS+RTMP的Docker镜像搭建

探索Nginx+FastDFS+RTMP的Docker镜像搭建

作者头像
默 语
发布2024-11-20 15:47:57
发布2024-11-20 15:47:57
8200
代码可运行
举报
文章被收录于专栏:JAVAJAVA
运行总次数:0
代码可运行

探索Nginx+FastDFS+RTMP的Docker镜像搭建

在本篇博客中,我们将深入探讨如何利用Docker构建Nginx、FastDFS以及RTMP的集成环境。我们将从Dockerfile的编写开始,一步步搭建起这个环境,并说明如何使用这个镜像来部署服务。

Dockerfile

代码语言:javascript
代码运行次数:0
复制
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"]

启动脚本

代码语言:javascript
代码运行次数:0
复制
#!/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文件目录下执行下面命令构建~ :::

代码语言:javascript
代码运行次数:0
复制
docker build -t mynginx .

上传dockerhub

:::info 先登录dockerhub,按提示输入账号密码 :::

代码语言:javascript
代码运行次数:0
复制
docker login

推送镜像到dockerhub

:::info 先在本地打远程标记镜像,然后推送 :::

代码语言:javascript
代码运行次数:0
复制
docker tag mynginx:1.24.0 q08240/mynginx:1.24.0

docker push q08240/mynginx:1.24.0

获取镜像

:::info 使用docker pull 直接拉取 :::

代码语言:javascript
代码运行次数:0
复制
docker pull q08240/mynginx:1.24.0

启动服务

代码语言:javascript
代码运行次数: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

fastdfs指定ip,nginx配置修改

相关配置文件放到宿主机中,启动服务的时候,把配置文件信息挂载到容器中,修改宿主机的配置文件即可~ 文件如下:

文件目录

说明

/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的集成环境,并进行了相应的配置和部署。这为项目的运行提供了便利,提高了开发和部署的效率。

参考资料

希望本文对您有所帮助,如果有任何疑问或建议,欢迎留言讨论!😊

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 探索Nginx+FastDFS+RTMP的Docker镜像搭建
  • Dockerfile
  • 启动脚本
  • 构建镜像
  • 上传dockerhub
  • 推送镜像到dockerhub
  • 获取镜像
  • 启动服务
  • fastdfs指定ip,nginx配置修改
    • 总结
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档