Former-commit-id: a43fd30923f651994a591ed80a0b7d692e7a5d48
TangShanKaiPing
wanggang 5 years ago
parent c216a8bade
commit 7aef8dc9e8

@ -2,92 +2,161 @@
<li class="nav-item"><a class="nav-link @GetClass("Home")" href="@Url.Action("Index","Home")"><i class="nav-icon fas fa-tachometer-alt"></i><p>首页</p></a></li> <li class="nav-item"><a class="nav-link @GetClass("Home")" href="@Url.Action("Index","Home")"><i class="nav-icon fas fa-tachometer-alt"></i><p>首页</p></a></li>
@if (User.IsInRole("Read-Setting")) @if (User.IsInRole("Read-Setting"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("Setting")" href="@Url.Action("Index","Setting")"><i class="nav-icon ion ion-md-hammer"></i><p>设置</p></a></li> <li class="nav-item"><a class="nav-link @GetClass("Setting")" href="@Url.Action("Index","Setting")"><i class="nav-icon fa fa-wrench"></i><p>设置</p></a></li>
}
@if (User.IsInRole("Read-User") || User.IsInRole("Read-Role") || User.IsInRole("Read-Permission"))
{
<li class="nav-item has-treeview @GetClass2("User","Role","Permission")">
<a href="javascript:;" class="nav-link @GetClass("User","Role","Permission")">
<i class="fa fa-user"></i>
<p>用户管理<i class="right fas fa-angle-left"></i></p>
</a>
<ul class="nav nav-treeview">
@if (User.IsInRole("Read-User"))
{
<li class="nav-item"><a class="nav-link @GetClass("User")" href="@Url.Action("Index","User")"><i class="far fa-circle nav-icon"></i><p>用户管理</p></a></li>
}
@if (User.IsInRole("Read-Role"))
{
<li class="nav-item"><a class="nav-link @GetClass("Role")" href="@Url.Action("Index","Role")"><i class="far fa-circle nav-icon"></i><p>角色管理</p></a></li>
}
@if (User.IsInRole("Read-Permission"))
{
<li class="nav-item"><a class="nav-link @GetClass("Permission")" href="@Url.Action("Index","Permission")"><i class="far fa-circle nav-icon"></i><p>权限管理</p></a></li>
}
</ul>
</li>
}
@if (User.IsInRole("Read-Product") || User.IsInRole("Read-Api") || User.IsInRole("Read-Parameter"))
{
<li class="nav-item has-treeview @GetClass2("Product","Api","Parameter")">
<a href="javascript:;" class="nav-link @GetClass("Product","Api","Parameter")">
<i class="fa fa-folder"></i>
<p>
产品管理
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
@if (User.IsInRole("Read-Product"))
{
<li class="nav-item"><a class="nav-link @GetClass("Product")" href="@Url.Action("Index","Product")"><i class="far fa-circle nav-icon"></i><span>产品管理</span></a></li>
}
@if (User.IsInRole("Read-Api"))
{
<li class="nav-item"><a class="nav-link @GetClass("Api")" href="@Url.Action("Index","Api")"><i class="far fa-circle nav-icon"></i><span>接口管理</span></a></li>
}
@if (User.IsInRole("Read-Parameter"))
{
<li class="nav-item"><a class="nav-link @GetClass("Parameter")" href="@Url.Action("Index","Parameter")"><i class="far fa-circle nav-icon"></i><span>参数管理</span></a></li>
}
</ul>
</li>
}
@if (User.IsInRole("Read-Node") || User.IsInRole("Read-Device") || User.IsInRole("Read-Data") || User.IsInRole("Read-Command"))
{
<li class="nav-item has-treeview @GetClass2("Node","Device","Data","Command")">
<a href="javascript:;" class="nav-link @GetClass("Node","Device","Data","Command")">
<i class="fa fa-cube"></i>
<p>
节点管理
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
@if (User.IsInRole("Read-Node"))
{
<li class="nav-item"><a class="nav-link @GetClass("Node")" href="@Url.Action("Index","Node")"><i class="far fa-circle nav-icon"></i><span>节点管理</span></a></li>
}
@if (User.IsInRole("Read-Device"))
{
<li class="nav-item"><a class="nav-link @GetClass("Device")" href="@Url.Action("Index","Device")"><i class="far fa-circle nav-icon"></i><span>设备管理</span></a></li>
}
@if (User.IsInRole("Read-Data"))
{
<li class="nav-item"><a class="nav-link @GetClass("Data")" href="@Url.Action("Index","Data")"><i class="far fa-circle nav-icon"></i><span>数据管理</span></a></li>
}
@if (User.IsInRole("Read-Command"))
{
<li class="nav-item"><a class="nav-link @GetClass("Command")" href="@Url.Action("Index","Command")"><i class="far fa-circle nav-icon"></i><span>设备命令管理</span></a></li>
}
</ul>
</li>
} }
@if (User.IsInRole("Read-User"))
{ @if (User.IsInRole("Read-Scene") || User.IsInRole("Read-SceneCommand") || User.IsInRole("Read-SceneTimer") || User.IsInRole("Read-SceneTigger"))
<li class="nav-item"><a class="nav-link @GetClass("User")" href="@Url.Action("Index","User")"><i class=" nav-icon far fa-user"></i><p>用户管理</p></a></li> {
} <li class="nav-item has-treeview @GetClass2("Scene","SceneCommand","SceneTimer","SceneTigger")">
@if (User.IsInRole("Read-Role")) <a href="javascript:;" class="nav-link @GetClass("Scene","SceneCommand","SceneTimer","SceneTigger")">
{ <i class="fa fa-archive"></i>
<li class="nav-item"><a class="nav-link @GetClass("Role")" href="@Url.Action("Index","Role")"><i class="nav-icon ion ion-md-glasses"></i><p>角色管理</p></a></li> <p>
} 节点场景管理
@if (User.IsInRole("Read-Permission")) <i class="right fas fa-angle-left"></i>
{ </p>
<li class="nav-item"><a class="nav-link @GetClass("Permission")" href="@Url.Action("Index","Permission")"><i class="nav-icon fas fa-key"></i><p>权限管理</p></a></li> </a>
} <ul class="nav nav-treeview">
@if (User.IsInRole("Read-Product")) @if (User.IsInRole("Read-Scene"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("Product")" href="@Url.Action("Index","Product")"><i class="nav-icon fa fa-leaf"></i><span>产品管理</span></a></li> <li class="nav-item"><a class="nav-link @GetClass("Scene")" href="@Url.Action("Index","Scene")"><i class="far fa-circle nav-icon"></i><span>场景管理</span></a></li>
} }
@if (User.IsInRole("Read-Api")) @if (User.IsInRole("Read-SceneCommand"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("Api")" href="@Url.Action("Index","Api")"><i class="nav-icon fa fa-plug"></i><span>接口管理</span></a></li> <li class="nav-item"><a class="nav-link @GetClass("SceneCommand")" href="@Url.Action("Index","SceneCommand")"><i class="far fa-circle nav-icon"></i><span>场景命令管理</span></a></li>
} }
@if (User.IsInRole("Read-Parameter")) @if (User.IsInRole("Read-SceneTimer"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("Parameter")" href="@Url.Action("Index","Parameter")"><i class="nav-icon far fa-circle"></i><span>参数管理</span></a></li> <li class="nav-item"><a class="nav-link @GetClass("SceneTimer")" href="@Url.Action("Index","SceneTimer")"><i class="far fa-circle nav-icon"></i><span>定时器管理</span></a></li>
} }
@if (User.IsInRole("Read-Node")) @if (User.IsInRole("Read-SceneTigger"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("Node")" href="@Url.Action("Index","Node")"><i class="nav-icon fa fa-home"></i><span>节点管理</span></a></li> <li class="nav-item"><a class="nav-link @GetClass("SceneTigger")" href="@Url.Action("Index","SceneTigger")"><i class="far fa-circle nav-icon"></i><span>触发器管理</span></a></li>
}
</ul>
</li>
}
@if (User.IsInRole("Read-Scene") || User.IsInRole("Read-SceneCommand") || User.IsInRole("Read-SceneTimer") || User.IsInRole("Read-SceneTigger"))
{
<li class="nav-item has-treeview @GetClass2("GlobalScene","GlobalSceneCommand","GlobalSceneTimer","GlobalSceneTigger")">
<a href="javascript:;" class="nav-link @GetClass("GlobalScene","GlobalSceneCommand","GlobalSceneTimer","GlobalSceneTigger")">
<i class="fa fa-laptop"></i>
<p>
平台场景管理
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
@if (User.IsInRole("Read-Scene"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalScene")" href="@Url.Action("Index","GlobalScene")"><i class="far fa-circle nav-icon"></i><span>场景管理</span></a></li>
}
@if (User.IsInRole("Read-SceneCommand"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalSceneCommand")" href="@Url.Action("Index","GlobalSceneCommand")"><i class="far fa-circle nav-icon"></i><span>场景命令管理</span></a></li>
}
@if (User.IsInRole("Read-SceneTimer"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalSceneTimer")" href="@Url.Action("Index","GlobalSceneTimer")"><i class="far fa-circle nav-icon"></i><span>定时器管理</span></a></li>
}
@if (User.IsInRole("Read-SceneTigger"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalSceneTigger")" href="@Url.Action("Index","GlobalSceneTigger")"><i class="far fa-circle nav-icon"></i><span>触发器管理</span></a></li>
}
</ul>
</li>
} }
@if (User.IsInRole("Read-NodeCategory")) @if (User.IsInRole("Read-NodeCategory"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("NodeCategory")" href="@Url.Action("Index","NodeCategory")"><i class="nav-icon fa fa-cubes"></i><span>节点分类管理</span></a></li> <li class="nav-item"><a class="nav-link @GetClass("NodeCategory")" href="@Url.Action("Index","NodeCategory")"><i class="nav-icon fa fa-leaf"></i><span>节点分类管理</span></a></li>
} }
@if (User.IsInRole("Read-Organ")) @if (User.IsInRole("Read-Organ"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("Organ")" href="@Url.Action("Index","Organ")"><i class="nav-icon fa fa-home"></i><span>节点机构管理</span></a></li> <li class="nav-item"><a class="nav-link @GetClass("Organ")" href="@Url.Action("Index","Organ")"><i class="nav-icon fa fa-sitemap"></i><span>节点机构管理</span></a></li>
}
@if (User.IsInRole("Read-Device"))
{
<li class="nav-item"><a class="nav-link @GetClass("Device")" href="@Url.Action("Index","Device")"><i class="nav-icon fa fa-tv"></i><span>设备管理</span></a></li>
}
@if (User.IsInRole("Read-Data"))
{
<li class="nav-item"><a class="nav-link @GetClass("Data")" href="@Url.Action("Index","Data")"><i class="nav-icon fa fa-database"></i><span>数据管理</span></a></li>
} }
@if (User.IsInRole("Read-LiveRecord")) @if (User.IsInRole("Read-LiveRecord"))
{ {
<li class="nav-item"><a class="nav-link @GetClass("LiveRecord")" href="@Url.Action("Index","LiveRecord")"><i class="nav-icon fa fa-camera"></i><span>回放管理</span></a></li> <li class="nav-item"><a class="nav-link @GetClass("LiveRecord")" href="@Url.Action("Index","LiveRecord")"><i class="nav-icon fa fa-camera"></i><span>回放管理</span></a></li>
} }
@if (User.IsInRole("Read-Command")) <li class="nav-item"><a class="nav-link" href="/JobServer/job"><i class="nav-icon fa fa-clock"></i><span>平台定时器监控</span></a></li>
{
<li class="nav-item"><a class="nav-link @GetClass("Command")" href="@Url.Action("Index","Command")"><i class="nav-icon far fa-circle"></i><span>设备命令管理</span></a></li>
}
@if (User.IsInRole("Read-Scene"))
{
<li class="nav-item"><a class="nav-link @GetClass("Scene")" href="@Url.Action("Index","Scene")"><i class="nav-icon fa fa-list-ol"></i><span>场景管理</span></a></li>
}
@if (User.IsInRole("Read-SceneCommand"))
{
<li class="nav-item"><a class="nav-link @GetClass("SceneCommand")" href="@Url.Action("Index","SceneCommand")"><i class="nav-icon far fa-circle"></i><span>场景命令管理</span></a></li>
}
@if (User.IsInRole("Read-SceneTimer"))
{
<li class="nav-item"><a class="nav-link @GetClass("SceneTimer")" href="@Url.Action("Index","SceneTimer")"><i class="nav-icon far fa-clock"></i><span>场景定时器管理</span></a></li>
}
@if (User.IsInRole("Read-SceneTigger"))
{
<li class="nav-item"><a class="nav-link @GetClass("SceneTigger")" href="@Url.Action("Index","SceneTigger")"><i class="nav-icon fa fa-fire"></i><span>场景触发器管理</span></a></li>
}
@if (User.IsInRole("Read-Scene"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalScene")" href="@Url.Action("Index","GlobalScene")"><i class="nav-icon fa fa-list-ol"></i><span>平台场景管理</span></a></li>
}
@if (User.IsInRole("Read-SceneCommand"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalSceneCommand")" href="@Url.Action("Index","GlobalSceneCommand")"><i class="nav-icon far fa-circle"></i><span>平台场景命令管理</span></a></li>
}
@if (User.IsInRole("Read-SceneTimer"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalSceneTimer")" href="@Url.Action("Index","GlobalSceneTimer")"><i class="nav-icon far fa-clock"></i><span>平台场景定时器管理</span></a></li>
}
@if (User.IsInRole("Read-SceneTigger"))
{
<li class="nav-item"><a class="nav-link @GetClass("GlobalSceneTigger")" href="@Url.Action("Index","GlobalSceneTigger")"><i class="nav-icon fa fa-fire"></i><span>平台场景触发器管理</span></a></li>
}
</ul> </ul>
@functions{ @functions{
@ -95,12 +164,17 @@
{ {
if (controllers.Select(o => o.ToLower()).Contains(this.ViewContext.RouteData.Values["controller"].ToString().ToLower())) if (controllers.Select(o => o.ToLower()).Contains(this.ViewContext.RouteData.Values["controller"].ToString().ToLower()))
{ {
if (controllers.Length > 1)
{
return "active open";
}
return "active"; return "active";
} }
return ""; return "";
} }
public string GetClass2(params string[] controllers)
{
if (controllers.Select(o => o.ToLower()).Contains(this.ViewContext.RouteData.Values["controller"].ToString().ToLower()))
{
return "menu-open";
}
return "";
}
} }

@ -4,23 +4,23 @@
}, },
"ConnectionStrings": { "ConnectionStrings": {
"postgresql": "User ID=root;Host=postgresql;Port=26257;Database=iotcenter;CommandTimeout=120", "postgresql": "User ID=root;Host=postgresql;Port=26257;Database=iotcenter;CommandTimeout=120",
"mysql": "Server=mysql;Port=3306;Database=iotcenter;Uid=root;Pwd=root;", "mysql": "Server=172.172.0.30;Port=3306;Database=iotcenter;Uid=root;Pwd=root;",
"redis": "redis:6379,allowAdmin=true", "redis": "redis:6379,allowAdmin=true",
"srs": "http://srs:1985", "srs": "http://172.172.0.60:1985",
"JobServer": "http://jobserver/JobServer", "JobServer": "http://172.172.0.10/JobServer",
"JobCallBack": "http://iotcenter/IoTCenter/api/v1/Api/ExecTimer" "JobCallBack": "http://172.172.0.10/IoTCenter/api/v1/Api/ExecTimer"
}, },
"influxdb": { "influxdb": {
"url": "http://influxdb:8086", "url": "http://172.172.0.50:8086",
"usr": "admin", "usr": "admin",
"pwd": "admin" "pwd": "admin"
}, },
"logserver": { "logserver": {
"influxdb": { "influxdb": {
"address": "http://influxdb" "address": "http://172.172.0.50"
} }
}, },
"minio": { "minio": {
"endpoint": "minio:9000" "endpoint": " 172.172.0.20:9000"
} }
} }

@ -1,5 +1,5 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"HangfireConnection": "Server=mysql;Port=3306;Database=jobserver;Uid=root;Pwd=root;Allow User Variables=True;" "HangfireConnection": "Server=172.172.0.30;Port=3306;Database=jobserver;Uid=root;Pwd=root;Allow User Variables=True;"
} }
} }

@ -4,10 +4,10 @@
}, },
"ConnectionStrings": { "ConnectionStrings": {
"postgresql": "User ID=root;Host=postgresql;Port=26257;Database=usercenter;CommandTimeout=120", "postgresql": "User ID=root;Host=postgresql;Port=26257;Database=usercenter;CommandTimeout=120",
"mysql": "Server=mysql;Port=3306;Database=usercenter;Uid=root;Pwd=root;", "mysql": "Server=172.172.0.30;Port=3306;Database=usercenter;Uid=root;Pwd=root;",
"redis": "redis:6379,allowAdmin=true" "redis": "172.172.0.40:6379,allowAdmin=true"
}, },
"minio": { "minio": {
"endpoint": "minio:9000" "endpoint": "172.172.0.20:9000"
} }
} }

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0.602")] [assembly: AssemblyInformationalVersion("1.0.0.603")]

@ -3,4 +3,7 @@
log log
docker\log\ docker\log\
docker\data\ docker\data\
docker-compose.override.yml docker-compose.override.yml
debug.start.ps1
debug.stop.ps1
nginx.development.conf

@ -42,6 +42,8 @@ sudo dpkg -i ~/publish/files/supervisor_3.3.5-1_all.deb
#config apps #config apps
sudo cp -f ~/publish/supervisord.conf /etc/supervisor/supervisord.conf sudo cp -f ~/publish/supervisord.conf /etc/supervisor/supervisord.conf
sudo chmod 755 ~/publish/apps/IoTNode/IoTNode sudo chmod 755 ~/publish/apps/IoTNode/IoTNode
sudo chmod 755 ~/publish/apps/frp/frpc
sudo chmod 755 ~/publish/apps/srs/objs/srs
sudo chmod 755 ~/publish/apps/IoTNode/wwwroot/ffmpeg-linux-arm sudo chmod 755 ~/publish/apps/IoTNode/wwwroot/ffmpeg-linux-arm
sudo chmod 755 ~/publish/apps/IoTNode/wwwroot/ffmpeg-linux-arm64 sudo chmod 755 ~/publish/apps/IoTNode/wwwroot/ffmpeg-linux-arm64

@ -1 +0,0 @@
docker-compose up -d --remove-orphans

@ -1,26 +1,32 @@
#docker-compose up -d #docker-compose up -d
version: "3.8" version: "3.8"
services: services:
webmvc: webmvc:
image: nginx:1.18 image: nginx:1.18
restart: always restart: always
environment: environment:
TZ: "Asia/Shanghai" TZ: "Asia/Shanghai"
ports: ports:
- 5001:80 - 5001:80
volumes: volumes:
- ../../../../projects/WebMVC/wwwroot:/usr/share/nginx/html - ../../../../projects/WebMVC/wwwroot:/usr/share/nginx/html
- ./docker/log/webmvc:/var/log/nginx - ./docker/log/webmvc:/var/log/nginx
networks:
default:
ipv4_address: 172.172.0.110
webspa: webspa:
image: nginx:1.18 image: nginx:1.18
restart: always restart: always
environment: environment:
TZ: "Asia/Shanghai" TZ: "Asia/Shanghai"
ports: ports:
- 5002:80 - 5002:80
volumes: volumes:
- ../../../../projects/WebSPA/wwwroot:/usr/share/nginx/html - ../../../../projects/WebSPA/wwwroot:/usr/share/nginx/html
- ./docker/log/webspa:/var/log/nginx - ./docker/log/webspa:/var/log/nginx
networks:
default:
ipv4_address: 172.172.0.120
nginx: nginx:
volumes: volumes:
- ./docker/conf/nginx/nginx.development.conf:/etc/nginx/nginx.conf - ./docker/conf/nginx/nginx.development.conf:/etc/nginx/nginx.conf

@ -1,73 +1,89 @@
#docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d #docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
#docker-compose down --remove-orphans
version: "3.8" version: "3.8"
services: services:
usercenter: usercenter:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always restart: always
environment: environment:
- TZ=Asia/Shanghai - TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=Docker - ASPNETCORE_ENVIRONMENT=Docker
command: bash -c "chmod +x /UserCenter/UserCenter && cd /UserCenter && ./UserCenter" command: bash -c "chmod +x /UserCenter/UserCenter && cd /UserCenter && ./UserCenter"
depends_on: depends_on:
- mysql - mysql
ports: ports:
- 8010:80 - 8010:80
volumes: volumes:
- ./apps/UserCenter:/UserCenter - ./apps/UserCenter:/UserCenter
- ./docker/log/UserCenter:/UserCenter/logs - ./docker/log/UserCenter:/UserCenter/logs
iotcenter: networks:
default:
ipv4_address: 172.172.0.70
iotcenter:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always restart: always
environment: environment:
- TZ=Asia/Shanghai - TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=Docker - ASPNETCORE_ENVIRONMENT=Docker
command: bash -c "chmod +x /IoTCenter/IoTCenter && cd /IoTCenter && ./IoTCenter" command: bash -c "chmod +x /IoTCenter/IoTCenter && cd /IoTCenter && ./IoTCenter"
depends_on: depends_on:
- mysql - mysql
- redis - redis
ports: ports:
- 8011:80 - 8011:80
volumes: volumes:
- ./apps/IotCenter:/IoTCenter - ./apps/IotCenter:/IoTCenter
- ./docker/log/IotCenter:/IotCenter/logs - ./docker/log/IotCenter:/IotCenter/logs
jobserver: networks:
default:
ipv4_address: 172.172.0.80
jobserver:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always restart: always
environment: environment:
- TZ=Asia/Shanghai - TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=Docker - ASPNETCORE_ENVIRONMENT=Docker
command: bash -c "sleep 3 && chmod +x /JobServer/JobServer && cd /JobServer && ./JobServer" command: bash -c "sleep 3 && chmod +x /JobServer/JobServer && cd /JobServer && ./JobServer"
depends_on: depends_on:
- mysql - mysql
ports: ports:
- 8013:80 - 8013:80
volumes: volumes:
- ./apps/JobServer:/JobServer - ./apps/JobServer:/JobServer
- ./docker/log/JobServer:/JobServer/logs - ./docker/log/JobServer:/JobServer/logs
networks:
default:
ipv4_address: 172.172.0.90
webmvc: webmvc:
image: nginx:1.18 image: nginx:1.18
restart: always restart: always
environment: environment:
TZ: "Asia/Shanghai" TZ: "Asia/Shanghai"
ports: ports:
- 5001:80 - 5001:80
volumes: volumes:
- ./apps/WebMVC/wwwroot:/usr/share/nginx/html - ./apps/WebMVC/wwwroot:/usr/share/nginx/html
- ./docker/log/webmvc:/var/log/nginx - ./docker/log/webmvc:/var/log/nginx
networks:
default:
ipv4_address: 172.172.0.110
webspa: webspa:
image: nginx:1.18 image: nginx:1.18
restart: always restart: always
environment: environment:
TZ: "Asia/Shanghai" TZ: "Asia/Shanghai"
ports: ports:
- 5002:80 - 5002:80
volumes: volumes:
- ./apps/WebSPA/wwwroot:/usr/share/nginx/html - ./apps/WebSPA/wwwroot:/usr/share/nginx/html
- ./docker/log/webspa:/var/log/nginx - ./docker/log/webspa:/var/log/nginx
networks:
default:
ipv4_address: 172.172.0.120
nginx: nginx:
depends_on: depends_on:
- usercenter - usercenter
- iotcenter - iotcenter
- jobserver - jobserver
- webmvc - webmvc
- webspa - webspa

@ -1,15 +1,11 @@
version: "3.8" version: "3.8"
networks: networks:
default: default:
services: driver: bridge
portainer: ipam:
image: portainer/portainer:1.23.2 config:
restart: always - subnet: 172.172.0.0/24
ports: services:
- 9002:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./docker/data/portainer:/data
minio: minio:
image: minio/minio:RELEASE.2020-05-29T14-08-49Z image: minio/minio:RELEASE.2020-05-29T14-08-49Z
restart: always restart: always
@ -17,104 +13,136 @@ services:
MINIO_ACCESS_KEY: "admin" MINIO_ACCESS_KEY: "admin"
MINIO_SECRET_KEY: "12345678" MINIO_SECRET_KEY: "12345678"
command: server /data command: server /data
ports: ports:
- 9000:9000 - 9000:9000
volumes: volumes:
- ./docker/data/minio:/data - ./docker/data/minio:/data
networks:
default:
ipv4_address: 172.172.0.20
mysql: mysql:
image: mysql:8.0 image: mysql:8.0
restart: always restart: always
environment: environment:
- MYSQL_ROOT_PASSWORD=root - MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=jobserver - MYSQL_DATABASE=jobserver
command: --default-authentication-plugin=mysql_native_password command: --default-authentication-plugin=mysql_native_password
healthcheck: ports:
test: "/usr/bin/mysql --user=root --password=root --execute \"SHOW DATABASES;\""
interval: 3s
timeout: 3s
retries: 10
ports:
- 3306:3306 - 3306:3306
volumes: volumes:
- ./docker/data/mysql:/var/lib/mysql - ./docker/data/mysql:/var/lib/mysql
phpmyadmin: networks:
image: phpmyadmin/phpmyadmin default:
restart: always ipv4_address: 172.172.0.30
environment:
- PMA_HOST=mysql
- PMA_PORT=3306
ports:
- 9003:80
depends_on:
- mysql
redis: redis:
image: redis:6.0 image: redis:6.0
restart: always restart: always
ports: ports:
- 6379:6379 - 6379:6379
phpredisadmin: networks:
image: erikdubbelboer/phpredisadmin default:
restart: always ipv4_address: 172.172.0.40
environment: influxdb:
- REDIS_1_HOST=redis
- REDIS_1_PORT=6379
- ADMIN_USER=admin
- ADMIN_PASS=123456
ports:
- 9004:80
depends_on:
- redis
influxdb:
image: influxdb:1.8 image: influxdb:1.8
restart: always restart: always
environment: environment:
TZ: "Asia/Shanghai" TZ: "Asia/Shanghai"
INFLUXDB_ADMIN_ENABLED: "true" INFLUXDB_ADMIN_ENABLED: "true"
INFLUXDB_ADMIN_USER: admin INFLUXDB_ADMIN_USER: admin
INFLUXDB_ADMIN_PASSWORD: admin INFLUXDB_ADMIN_PASSWORD: admin
ports: ports:
- 8086:8086 - 8086:8086
volumes: volumes:
- ./docker/data/influxdb:/var/lib/influxdb - ./docker/data/influxdb:/var/lib/influxdb
influxdb-web: networks:
image: influxdb:1.2.4 default:
restart: always ipv4_address: 172.172.0.50
environment:
TZ: "Asia/Shanghai"
INFLUXDB_ADMIN_ENABLED: "true"
INFLUXDB_ADMIN_USER: admin
INFLUXDB_ADMIN_PASSWORD: admin
ports:
- 8083:8083
depends_on:
- influxdb
srs: srs:
image: ossrs/srs:v4.0.23 image: ossrs/srs:v4.0.23
environment: environment:
TZ: "Asia/Shanghai" TZ: "Asia/Shanghai"
restart: always restart: always
ports: ports:
- 1935:1935 - 1935:1935
- 8080:8080 - 8080:8080
- 1985:1985 - 1985:1985
volumes: volumes:
- ./docker/conf/srs/srs.conf:/usr/local/srs/conf/srs.conf - ./docker/conf/srs/srs.conf:/usr/local/srs/conf/srs.conf
- ./docker/log/srs:/usr/local/srs/objs/log - ./docker/log/srs:/usr/local/srs/objs/log
- ./docker/data/srs:/usr/local/srs/objs/nginx/html/video - ./docker/data/srs:/usr/local/srs/objs/nginx/html/video
nginx: networks:
default:
ipv4_address: 172.172.0.60
nginx:
image: nginx:1.18 image: nginx:1.18
restart: always restart: always
environment: environment:
TZ: "Asia/Shanghai" TZ: "Asia/Shanghai"
ports: ports:
- 80:80 - 80:80
- 443:443 - 443:443
volumes: volumes:
- ./docker/conf/nginx/nginx.conf:/etc/nginx/nginx.conf - ./docker/conf/nginx/nginx.conf:/etc/nginx/nginx.conf
#- ./docker/conf/nginx/edusoa.key:/etc/nginx/edusoa.key #- ./docker/conf/nginx/edusoa.key:/etc/nginx/edusoa.key
#- ./docker/conf/nginx/edusoa.pem:/etc/nginx/edusoa.pem #- ./docker/conf/nginx/edusoa.pem:/etc/nginx/edusoa.pem
- ./docker/log/nginx:/var/log/nginx - ./docker/log/nginx:/var/log/nginx
depends_on: depends_on:
- minio - minio
- mysql - mysql
networks:
default:
ipv4_address: 172.172.0.10
portainer:
image: portainer/portainer:1.23.2
restart: always
ports:
- 9002:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./docker/data/portainer:/data
networks:
default:
ipv4_address: 172.172.0.101
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
environment:
- PMA_HOST=mysql
- PMA_PORT=3306
ports:
- 9003:80
depends_on:
- mysql
networks:
default:
ipv4_address: 172.172.0.102
phpredisadmin:
image: erikdubbelboer/phpredisadmin
restart: always
environment:
- REDIS_1_HOST=redis
- REDIS_1_PORT=6379
- ADMIN_USER=admin
- ADMIN_PASS=123456
ports:
- 9004:80
depends_on:
- redis
networks:
default:
ipv4_address: 172.172.0.103
influxdb-web:
image: influxdb:1.2.4
restart: always
environment:
TZ: "Asia/Shanghai"
INFLUXDB_ADMIN_ENABLED: "true"
INFLUXDB_ADMIN_USER: admin
INFLUXDB_ADMIN_PASSWORD: admin
ports:
- 8083:8083
depends_on:
- influxdb
networks:
default:
ipv4_address: 172.172.0.104

@ -22,44 +22,44 @@ http {
location / { location / {
if ($http_user_agent ~* "(mobile|android|ipad|iphone|ipod|tablet)") { if ($http_user_agent ~* "(mobile|android|ipad|iphone|ipod|tablet)") {
proxy_pass http://webspa; proxy_pass http://172.172.0.120;
break; break;
} }
proxy_pass http://webmvc/; proxy_pass http://172.172.0.110/;
} }
location ^~ /dfs/ { location ^~ /dfs/ {
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://minio:9000/; proxy_pass http://172.172.0.20:9000/;
} }
location ^~ /live/ { location ^~ /live/ {
proxy_pass http://srs:8080/live/; proxy_pass http://172.172.0.60:8080/live/;
} }
location ^~ /video/ { location ^~ /video/ {
proxy_pass http://srs:8080/video/; proxy_pass http://172.172.0.60:8080/video/;
} }
location ^~ /UserCenter/ { location ^~ /UserCenter/ {
proxy_pass http://usercenter/UserCenter/; proxy_pass http://172.172.0.70/UserCenter/;
} }
location ^~ /IoTCenter/ { location ^~ /IoTCenter/ {
proxy_pass http://iotcenter/IoTCenter/; proxy_pass http://172.172.0.80/IoTCenter/;
} }
location ^~ /IoTCenter/hub { location ^~ /IoTCenter/hub {
proxy_pass http://iotcenter/IoTCenter/hub; proxy_pass http://172.172.0.80/IoTCenter/hub;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; proxy_set_header Connection "upgrade";
} }
location ^~ /JobServer/ { location ^~ /JobServer/ {
proxy_pass http://jobserver/JobServer/; proxy_pass http://172.172.0.90/JobServer/;
} }
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;

@ -1 +1 @@
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --remove-orphans -d

@ -1 +1 @@
docker-compose down docker-compose down --remove-orphans
Loading…
Cancel
Save