admin.net框架docker部署

文章详细介绍了如何使用Docker部署前端Nginx服务器和后端Dotnet应用的不同版本,包括配置文件映射、端口映射、日志管理和环境变量设置。同时提到了数据库MariaDB的容器化部署以及Portainer容器管理器的使用。此外,还讨论了通过WebSocket将RTSP视频流转换为FLV并推送到前端的实现方法。

前端:nginx

docker run -id -p 81:80
-v /root/docker/ioms/conf/nginx:/etc/nginx //配置文件映射
-v /root/docker/ioms/logs/:/var/log/nginx //日志
-v /root/docker/ioms/www/:/usr/share/nginx/html //html文件
--name ioms.frontend
nginx:latest

配置文件在这里:点击下载文件

后端:dotnet6

  1. 后端发布版本1

docker run 
-id 
-p 7000:5000 
-v /root/ioms/publish:/app 
--name ioms.backend 
--log-opt max-size=10m //日志文件大小最大10M
--log-opt max-file=3//日志文件最多3个
admin.net.server:1.0 
bash start.sh

Start.sh启动脚本文件说明

#!/bin/sh
# vim:sw=4:ts=4:et
cd app/;
dotnet Admin.NET.Web.Entry.dll --urls http://*.*:5000;
  1. 后端发布版本2

使用Dockerfile生成镜像

使用vs发布后,在publish文件夹里添加Dockerfile文件,内容如下

//asp.net6的运行时 暴露端口80
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
EXPOSE 80

//解决admin.net框架内导出excel需要用到libgdiplus的问题,就是要安装这个插件
RUN apt-get update -y
RUN apt-get install -y libgdiplus
RUN apt-get clean
RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

//解决docker时区差8个小时的问题
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone

//启动
COPY . .
ENTRYPOINT ["dotnet", "Admin.NET.Web.Entry.dll"]

//libgdiplus参考:https://blog.csdn.net/weixin_67510312/article/details/128612829

//时区问题参考:https://blog.csdn.net/smooth00/article/details/107058753

然后执行指令创建镜像:

docker build -t admin.net:1.0 .

然后根据镜像创建容器即可

docker run -id -p 7000:80 -v /root/docker/ioms/publish:/app --name ioms.backend admin.net:1.0
  1. 后端发布版本3

使用Dockerfile生成aspnet6的通用镜像

使用CMD来执行dotnet应用程序,使用动态传入的DLLNAME参数

FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
EXPOSE 80

RUN apt-get update -y
RUN apt-get install -y libgdiplus
RUN apt-get clean
RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone

ENV DLLNAME="" #定义环境变量

COPY . .

CMD dotnet $DLLNAME #改用CMD来执行dotnet应用程序,使用动态传入的DLLNAME参数

运行容器

docker run -id -p 7000:80 \
-v /root/docker/ioms/publish:/app \
-e DLLNAME="AuthServer.dll" \ #运行容器时将dll名称传入
--name ioms.backend \
admin.net:1.0
  1. 后端发布版本4

使用ENTRYPOINT作为容器入口,使用CMD作为参数传入

FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
EXPOSE 80

RUN apt-get update -y
RUN apt-get install -y libgdiplus
RUN apt-get clean
RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone

COPY . .

ENTRYPOINT ["dotnet"]

CMD ["AuthServer.dll"]#CMD的参数会当做ENTRYPOINT的执行参数传入
CMD []#可以写值AuthServer.dll算是默认值,也可以为空

运行容器

docker run -id -p 53363:80 \
-v /home/abp.microservice/OpenIddict:/app \
--name abp.microservice.openiddict \
aspnet7:1.2 \
AuthServer.dll #传入参数

数据库:mariadb

docker run --name mariadb-prod -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /data/software_docker/mariadb_test/data:/var/lib/mysql -d mariadb:latest

docker容器管理器:portainer

docker run -d --name portainer  -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer_data:/data portainer/portainer-ce:latest

WS视频推流

rtsp视频流转flv 通过websocket推送给前端

docker run -id -p 8888:8888 -v /home/mes/admin.net/vedio:/home/express --name admin.net.vedio node:latest node /home/express/server.js

node服务文件在这里:点击下载文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值