【好玩的开源项目】使用Docker部署briefing视频聊天系统

news2024/11/19 6:20:46

【好玩的开源项目】使用Docker部署briefing视频聊天系统

  • 一、briefing介绍
  • 二、本地环境介绍
    • 2.1 本地环境规划
    • 2.2 本次实践介绍
  • 三、本地环境检查
    • 3.1 检查Docker服务状态
    • 3.2 检查Docker版本
    • 3.3 检查docker compose 版本
  • 四、下载briefing镜像
  • 五、部署briefing速查表
    • 5.1 使用docker-cli创建briefing容器
    • 5.2 创建挂载目录
    • 5.3 编辑docker-compose.yaml文件
    • 5.4 运行briefing容器
    • 5.5 检查briefing容器状态
    • 5.6 检查briefing容器日志
  • 六、配置反向代理
    • 6.1 安装nginx
    • 6.2 创建证书相关文件
    • 6.3 修改nginx配置文件
    • 6.4 重启nginx服务
  • 七、访问briefing首页

一、briefing介绍

  • briefing简介

briefing是一个开源的、安全的直接视频群聊平台。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostnameIP地址操作系统版本Docker版本
dokcer192.168.3.166centos 7.62 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署briefing视频聊天系统。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-12-21 18:58:04 CST; 3 days ago
     Docs: https://docs.docker.com
 Main PID: 11425 (dockerd)
    Tasks: 47
   Memory: 387.3M
   CGroup: /system.slice/docker.service
           ├─11425 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

3.2 检查Docker版本

检查Docker版本

[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载briefing镜像

从docker hub拉取briefing镜像

[root@jeven nullboard]# docker pull holtwick/briefing
Using default tag: latest
latest: Pulling from holtwick/briefing
661ff4d9561e: Pull complete
89059ca18a98: Pull complete
9bb776f8ddb0: Pull complete
ef0b6390b7f1: Pull complete
e4cdfee850fc: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:bd6afac29ce56fdcb689e03204dd00ebcfdd2690a55a817fdc00ef0799a4c99b
Status: Downloaded newer image for holtwick/briefing:latest
docker.io/holtwick/briefing:latest

五、部署briefing速查表

5.1 使用docker-cli创建briefing容器

使用docker-cli快速部署briefing容器

docker run -d \  \
--name briefing \
-v /datar/briefing/data:/app/data \
-p 6802:8080 \
--restart always \
holtwick/briefing

5.2 创建挂载目录

创建挂载目录

[root@jeven ~]# mkdir -p /data/briefing
[root@jeven ~]# cd /data/briefing/

5.3 编辑docker-compose.yaml文件

本次实践部署使用docker compose方式,编辑docker-compose.yaml文件。

version: '3'

services:
  briefing:
    image: holtwick/briefing
    restart: always
    volumes:
      - /datar/briefing/data:/app/data
    ports:
      - 6802:8080

# networks:
#   default:
#     external:
#       name: proxy


5.4 运行briefing容器

使用docker-compose.yaml文件创建briefing容器

[root@jeven briefing]#  docker compose up -d
[+] Running 2/2
 ⠿ Network briefing_default       Created                                                                               0.0s
 ⠿ Container briefing-briefing-1  Started                                                                               1.2s

5.5 检查briefing容器状态

检查briefing容器状态,确保briefing容器正常启动。

[root@jeven briefing]# docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS          PORTS                                  NAMES
9c08e1730708   holtwick/briefing               "docker-entrypoint.s…"   39 seconds ago   Up 37 seconds   3478/tcp, 0.0.0.0:6802->8080/tcp, :::6802->8080/tcp   briefing-briefing-1

5.6 检查briefing容器日志

检查briefing容器运行日志,确保briefing服务正常启动。

[root@jeven briefing]# docker logs briefing-briefing-1
Zerva: Vite serving from /app/www

Zerva: *********************************************************
Zerva: Open page at http://localhost:8080
Zerva: *********************************************************

六、配置反向代理

6.1 安装nginx

由于是测试环境,本次反向代理直接部署在本地Docker宿主机同一台服务器上,直接使用yum快速安装nginx。

 yum -y install nginx

启动nginx服务

[root@jeven briefing]# systemctl enable --now nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

检查nginx服务状态

[root@jeven briefing]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-12-26 16:40:11 CST; 24s ago
  Process: 81723 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 81720 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 81718 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 81725 (nginx)
    Tasks: 3
   Memory: 2.1M
   CGroup: /system.slice/nginx.service
           ├─81725 nginx: master process /usr/sbin/nginx
           ├─81726 nginx: worker process
           └─81727 nginx: worker process

Dec 26 16:40:10 jeven systemd[1]: Starting The nginx HTTP and reverse proxy server...
Dec 26 16:40:11 jeven nginx[81720]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 26 16:40:11 jeven nginx[81720]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Dec 26 16:40:11 jeven systemd[1]: Started The nginx HTTP and reverse proxy server.

6.2 创建证书相关文件

  • 生成私钥
openssl genrsa -out nginx.key 2048
  • 生成证书
openssl req -new -key nginx.key -out nginx.csr
openssl x509 -req -in nginx.csr -signkey nginx.key -out nginx.pem
  • 检查证书相关文件
[root@jeven briefing]# ls
docker-compose.yaml  nginx.csr  nginx.key  nginx.pem

6.3 修改nginx配置文件

修改nginx配置文件/etc/nginx/nginx.conf

  • 备份nginx.conf文件
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  • 修改nginx.conf文件,修改位置如图中标注。
 vim /etc/nginx/nginx.conf


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
 #   upstream web {
 #      server 192.168.3.166;
 #       }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://192.168.3.166:6802;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      /data/briefing/nginx.pem;
        ssl_certificate_key  /data/briefing/nginx.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://192.168.3.166:6802;
        }
    }

}

在这里插入图片描述

在这里插入图片描述

6.4 重启nginx服务

重启nginx服务

systemctl restart nginx

七、访问briefing首页

访问地址:https://192.168.3.166/,将IP替换为自己服务器IP地址,进入到briefing首页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

在这里插入图片描述

将链接地址发送给视频聊天的人员就可以了,这里由于是台式机没有摄像头显示。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1371398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

界面组件DevExpress WPF v23.2 - 更轻量级的主题支持

DevExpress WPF Subscription拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExp…

【Python机器学习】用于回归的决策树

用于回归的决策树与用于分类的决策树类似,在DecisionTreeRegressor中实现。DecisionTreeRegressor不能外推,也不能在训练数据范围之外的数据进行预测。 利用计算机内存历史及格的数据进行实验,数据展示: import pandas as pd im…

LeetCode-搜索插入位置(35)

题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 思路: 给定数组查找指定元素值的…

免 费 搭 建 多模式商城:b2b2c、o2o、直播带货一网打尽

鸿鹄云商 b2b2c产品概述 【b2b2c平台】,以传统电商行业为基石,鸿鹄云商支持“商家入驻平台自营”多运营模式,积极打造“全新市场,全新 模式”企业级b2b2c电商平台,致力干助力各行/互联网创业腾飞并获取更多的收益。从消…

超级工具大盘点

在当今竞争激烈和快节奏的工作环境中,提高效率成为每个人追求的目标。为了更好地应对日常任务和项目,我们需要运用有效的工具和策略。软件是其中一种强大的支持工具,可以极大地提升工作效率和管理能力。在本文中,我将分享一些值得…

详解c++移动构造函数和移动赋值运算符在代码性能中起的作用

对象移动 对象移动,就是把一个不想用了的对象A中的一些有用的数据提取出来,在构建新对象B的时候就不需要重新构建对象中的所有数据——从不想用了的对象A中提取出来的有用数据在构建对象B时都可以拿来使用。 我们知道,拷贝构造函数、拷贝赋…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷④

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷4 目录 需要竞赛软件包环境以及备赛资源可私信博主!!! 2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷4 模块一 …

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析 【赛程名称】高职组-云计算赛项第一场-私有云【任务 1】私有云服务搭建[10 分]【题目 2】Yum 源配置[0.5 分]【题目 3】配置无秘钥 ssh[0.5 分]【题目 4】基础安装[0.5 分]【题目 5】数据库安装与调优[0.5 分]【题目 …

Open CASCADE学习|模块组成

OpenCASCADE由七个模块组成,分别如下: Foundation Classes基础类 Modeling Data 建模数据 Modeling Algorithms 建模算法 Visualization 可视化 Data Exchange 数据交换 Application Framework 程序框架 Kernel Classes 核心类 2D Geometry 二维几…

JDBC初体验(一)

一、JDBC概述 JDBC(Java DateBase Connectivity)是Java数据库连接技术的简称,提供连接各种常用数据库的能力 1.1 JDBC工作原理 JDBC API 提供者:Sun公司 作用:Java访问数据库的标准规范。提供给程序员调用的接口与类…

基于ssm的图书馆书库管理系统+vue论文

摘 要 当下,如果还依然使用纸质文档来记录并且管理相关信息,可能会出现很多问题,比如原始文件的丢失,因为采用纸质文档,很容易受潮或者怕火,不容易备份,需要花费大量的人员和资金来管理用纸质文…

深度学习分类任务中的准确率、精确率(查准率)、召回率(查全率)、F1值、ROC曲线的AUC值,

0. 混淆矩阵 其中关于 TP, TN; FP, FN 的解释; 其中 首字母 T,F代表预测的情况,即T代表预测的结果是对的, F代表预测的结果是错误的; 第二个字母代表预测是预测为 正样本,还是负样本, Positve…

<软考高项备考>《论文专题 - 57 干系人管理(1) 》

1 论文基础 1.1 写作要点 过程定义、作用写作要点、思路识别干系人识别干系人是定期识别项目干系人,分析和记录他们的利益、参与度、相互依赖性、影响力和对项目成功的潜在影响的过程。作用:使项目团队能够建立对每个干系人或干系人群体的适度关注。本项目里有哪些…

VMware虚拟机安装Ubuntu

准备:Ubuntu的镜像文件,VMware,手. 1.新建虚拟机,选择自定义,下一步。 2.硬件兼容性,选择Workstation 16.x,下一步。 3.选择安装程序光盘映像文件,路径为映像文件所在文件夹,下一步。 4. 创建用户和设置密…

Docker部署情侣恋爱网站

个人名片: 对人间的热爱与歌颂,可抵岁月冗长🌞 个人主页👨🏻‍💻:念舒_C.ying 个人博客🌏 :念舒_C.ying 情侣恋爱网站 1. 修改代码2. 目录结构3. 编写Dockerfile4. 编写d…

苹果电脑Markdown文本编辑Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器,支持Windows、MacOS和Linux操作系统。它具有实时预览功能,能够自动将Markdown文本转换为漂亮的排版效果,让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

企业数字化转型指南,12步实现企业转型之路

引言 在这个数字化时代,企业面临着前所未有的机遇和挑战。随着科技的飞速发展和市场竞争的加剧,传统商业模式正在经历翻天覆地的变革。数字化转型,已经不再只是一种选择,而是企业生存和发展的必然路径。它不仅仅是技术的升级&…

网络正常运行时间监控工具

正常运行时间是衡量系统可靠性的指标,表示为机器工作和可用时间的百分比。当提到 IT 网络时,正常运行时间是衡量网络设备、网站和其他服务的可用性的指标。网络正常运行时间通常以百分位数来衡量,例如“五个 9”,这意味着系统在 9…

K8S中SC、PV、PVC的理解

存储类(StorageClass)定义了持久卷声明(PersistentVolumeClaim)所需的属性和行为,而持久卷(PersistentVolume)是实际的存储资源,持久卷声明(PersistentVolumeClaim&#…

基于ssm的无纸化学习平台的设计与实现论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…