docker compose部署一个远程监控和管理工具

部署

1.编写配置文件

vim docker-compose.yml

内容如下


version: "3.7"# networks
networks:proxy:driver: bridgeipam:driver: defaultconfig:- subnet: 172.20.0.0/24api-db: nullredis: nullmesh-db: null# docker managed persistent volumes
volumes:tactical_data: nullpostgres_data: nullmongo_data: nullmesh_data: nullredis_data: nullservices:# postgres database for api servicetactical-postgres:container_name: trmm-postgresimage: postgres:13-alpinerestart: alwaysenvironment:POSTGRES_DB: tacticalrmmPOSTGRES_USER: ${POSTGRES_USER}POSTGRES_PASSWORD: ${POSTGRES_PASS}volumes:- postgres_data:/var/lib/postgresql/datanetworks:- api-db# redis container for celery taskstactical-redis:container_name: trmm-redisimage: redis:6.0-alpineuser: 1000:1000command: redis-serverrestart: alwaysvolumes:- redis_data:/datanetworks:- redis# used to initialize the docker environmenttactical-init:container_name: trmm-initimage: ${IMAGE_REPO}tactical:${VERSION}restart: on-failurecommand: ["tactical-init"]environment:POSTGRES_USER: ${POSTGRES_USER}POSTGRES_PASS: ${POSTGRES_PASS}APP_HOST: ${APP_HOST}API_HOST: ${API_HOST}MESH_USER: ${MESH_USER}MESH_HOST: ${MESH_HOST}TRMM_USER: ${TRMM_USER}TRMM_PASS: ${TRMM_PASS}depends_on:- tactical-postgres- tactical-meshcentral- tactical-redisnetworks:- api-db- proxy- redisvolumes:- tactical_data:/opt/tactical- mesh_data:/meshcentral-data- mongo_data:/mongo/data/db- redis_data:/redis/data# natstactical-nats:container_name: trmm-natsimage: ${IMAGE_REPO}tactical-nats:${VERSION}user: 1000:1000restart: alwaysenvironment:API_HOST: ${API_HOST}volumes:- tactical_data:/opt/tacticalnetworks:api-db: nullproxy:aliases:- ${API_HOST}# meshcentral containertactical-meshcentral:container_name: trmm-meshcentralimage: ${IMAGE_REPO}tactical-meshcentral:${VERSION}user: 1000:1000restart: alwaysenvironment:MESH_HOST: ${MESH_HOST}MESH_USER: ${MESH_USER}MESH_PASS: ${MESH_PASS}MONGODB_USER: ${MONGODB_USER}MONGODB_PASSWORD: ${MONGODB_PASSWORD}MESH_PERSISTENT_CONFIG: ${MESH_PERSISTENT_CONFIG}networks:proxy:aliases:- ${MESH_HOST}mesh-db: nullvolumes:- tactical_data:/opt/tactical- mesh_data:/home/node/app/meshcentral-datadepends_on:- tactical-mongodb# mongodb container for meshcentraltactical-mongodb:container_name: trmm-mongodbimage: mongo:4.4user: 1000:1000restart: alwaysenvironment:MONGO_INITDB_ROOT_USERNAME: ${MONGODB_USER}MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD}MONGO_INITDB_DATABASE: meshcentralnetworks:- mesh-dbvolumes:- mongo_data:/data/db# container that hosts vue frontendtactical-frontend:container_name: trmm-frontendimage: ${IMAGE_REPO}tactical-frontend:${VERSION}user: 1000:1000restart: alwaysnetworks:- proxyvolumes:- tactical_data:/opt/tacticalenvironment:API_HOST: ${API_HOST}# container for django backendtactical-backend:container_name: trmm-backendimage: ${IMAGE_REPO}tactical:${VERSION}user: 1000:1000command: ["tactical-backend"]restart: alwaysnetworks:- proxy- api-db- redisvolumes:- tactical_data:/opt/tacticaldepends_on:- tactical-postgres# container for django websockets connectionstactical-websockets:container_name: trmm-websocketsimage: ${IMAGE_REPO}tactical:${VERSION}user: 1000:1000command: ["tactical-websockets"]restart: alwaysnetworks:- proxy- api-db- redisvolumes:- tactical_data:/opt/tacticaldepends_on:- tactical-postgres- tactical-backend# container for tactical reverse proxytactical-nginx:container_name: trmm-nginximage: ${IMAGE_REPO}tactical-nginx:${VERSION}user: 1000:1000restart: alwaysenvironment:APP_HOST: ${APP_HOST}API_HOST: ${API_HOST}MESH_HOST: ${MESH_HOST}CERT_PUB_KEY: ${CERT_PUB_KEY}CERT_PRIV_KEY: ${CERT_PRIV_KEY}networks:proxy:ipv4_address: 172.20.0.20ports:- "${TRMM_HTTP_PORT-80}:8080"- "${TRMM_HTTPS_PORT-443}:4443"volumes:- tactical_data:/opt/tactical# container for celery worker servicetactical-celery:container_name: trmm-celeryimage: ${IMAGE_REPO}tactical:${VERSION}user: 1000:1000command: ["tactical-celery"]restart: alwaysnetworks:- redis- proxy- api-dbvolumes:- tactical_data:/opt/tacticaldepends_on:- tactical-postgres- tactical-redis# container for celery beat servicetactical-celerybeat:container_name: trmm-celerybeatimage: ${IMAGE_REPO}tactical:${VERSION}user: 1000:1000command: ["tactical-celerybeat"]restart: alwaysnetworks:- proxy- redis- api-dbvolumes:- tactical_data:/opt/tacticaldepends_on:- tactical-postgres- tactical-redis

2.环境参数

vim .env

内容如下

IMAGE_REPO=tacticalrmm/
VERSION=latest# tactical credentials (Used to login to dashboard)
TRMM_USER=tactical
TRMM_PASS=tactical# optional web port override settings 
TRMM_HTTP_PORT=80
TRMM_HTTPS_PORT=443# dns settings
APP_HOST=rmm.example.com
API_HOST=api.example.com
MESH_HOST=mesh.example.com# mesh settings
MESH_USER=tactical
MESH_PASS=tactical
MONGODB_USER=mongouser
MONGODB_PASSWORD=mongopass
MESH_PERSISTENT_CONFIG=0# database settings
POSTGRES_USER=postgres
POSTGRES_PASS=postgrespass

3.配置hosts

增加如下内容

192.168.168.110 rmm.example.com
192.168.168.110 api.example.com
192.168.168.110 mesh.example.com

4.启动

docker compose up -d

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

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

相关文章

问山海——天涯海角——桃花渊攻击顺序

文章目录 桃花渊代码代码解读 桃花渊 规划击杀各个boss顺序。 副本持续时间为30分钟,每个地方的boss被打死后,需要一定时间才能重新刷新。 只考虑其中两种boss,龟将和龟龙。各有四个。 其中我从一个boss地点到达另一个boss地点移动时间为…

全面了解C语言宏的原理和应用

在C语言中,宏是一种强大的预处理指令,它允许程序员在编译之前对代码进行文本替换和处理。了解宏的原理和用法对于提高代码质量、减少编译时间以及避免潜在的错误至关重要。本文将详细解析C语言宏的原理,并通过实用示例帮助您更好地理解和应用…

HarmonyOS 状态管理装饰器 Observed与ObjectLink 处理嵌套对象/对象数组 结构双向绑定

本文 我们还是来说 两个 harmonyos 状态管理的装饰器 Observed与ObjectLink 他们是用于 嵌套对象 或者 以对象类型为数组元素 的数据结构 做双向同步的 之前 我们说过的 state和link 都无法捕捉到 这两种数据内部结构的变化 这里 我们模拟一个类数据结构 class Person{name:…

Java 学习和实践笔记(3)

安装和配置成功: 运行第一个程序时出现这个错误:javac不是内部或外部命令,也不是可运行的程序或批处理文件。 找到这篇文章看了下:javac 不是内部或外部命令,也不是可运行的程序 或批处理文件。_javac 不是内部或外部…

2024/2/12

分支、循环练习 1、选择题 1.1、以下程序的输出结果是____A____。 main() { int k11,k22,k33,x15; if(!k1) x--; else if(k2) if(k3) x4; else x3; printf(“x%d\n”,x); } A x4 B x15 C x14 D x3 1.2、有以下程序,while循环执行____A____次…

88.Go设计优雅的错误处理

文章目录 导言一、Go 的约定二、简单错误创建1、 errors.New()2、fmt.Errorf() 三、哨兵错误四、对错误进行编程1、优雅的错误处理设计2、与错误有关的的API 五、总结 导言 在 75.错误码设计、实现统一异常处理和封装统一返回结果 中,我们介绍了错误码的设计&#…

矩阵在计算机图像处理中的应用

矩阵在计算机图像处理中是非常核心的概念,因为它们为表示和操作图像数据提供了一种非常方便和强大的方式。以下是矩阵在计算机图像处理中的一些关键作用: 图像表示:在计算机中,图像通常被表示为像素矩阵,也就是二维数组…

假期day5

TCP UDP区别 共同点:都是属于传输层的协议 TCP:稳定。面向连接的,有可靠的数据传输服务。传输过程中数据无误,无丢失,无失序,无重复。传输效率低,耗费资源多。数据收发不同步,有沾…

【JavaScript】变量声明和赋值

文章目录 变量的声明1. 使用 var2. 使用 let3. 使用 const 变量的赋值变量的作用域最佳实践总结 在 JavaScript 中, 变量是我们存储和操作数据的关键。本篇博客将讨论 JavaScript 中的变量声明和赋值,涵盖不同的声明关键字、变量的作用域以及一些最佳实…

从源码学习final的使用

从源码学习final的使用 final的作用 ​ final字面意思,意为最终的、不可变的。在Java中,final可以用来修饰类、方法和变量,可以分别起到不同的作用。 final修饰类:表示该类不可以被继承;final修饰方法:表…

Netty Review - NioEventLoopGroup源码解析

文章目录 概述类继承关系源码分析小结 概述 EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workerGroup new NioEventLoopGroup();这段代码是在使用Netty框架时常见的用法,用于创建两个不同的EventLoopGroup实例,一个用于处理连…

Educational Codeforces Round 1(远古edu计划)

A. 高斯求和&#xff0c;如果2次幂小于n就减2次 #include<bits/stdc.h> #define INF 1e9 using namespace std; typedef long long ll; const int N2e59; int a[N]; int f[N],vis[N]; ll sn(ll a1,ll an,ll num){return (a1an)*num/2;} void init(){f[1]1;for(int i2;i…

【Linux】内核中的链表

&#x1f525;博客主页&#xff1a;PannLZ &#x1f38b;系列专栏&#xff1a;《Linux系统之路》 &#x1f94a;不要让自己再留有遗憾&#xff0c;加油吧&#xff01; 文章目录 链表1.创建和初始化2.创建节点3.添加节点4.删除节点5.遍历 链表 内核开发者只实现了循环双链表&am…

Android 9.0 禁用adb install 安装app功能

1.前言 在9.0的系统产品定制化开发中,在进行一些定制开发中,对于一些app需要通过属性来控制禁止安装,比如adb install也不允许安装,所以就需要 熟悉adb install的安装流程,然后来禁用adb install安装功能,接下来分析下adb 下的安装流程 2.禁用adb install 安装app功能的…

1. pick gtk dll 程序的制作

文章目录 前言预览细节要点初始窗口尺寸提示音快速提示信息对话框AlertDialog鼠标移入移出事件布局与父子控件关系图片 后续源码及资源 前言 在之前的打包测试中我提到了需要一个挑选dll的程序于是我打算用Gtk来制作这个程序 预览 细节要点 初始窗口尺寸 只有主窗口有set_d…

unity显示图片

目录 创建c#脚本 自己创建gui组件&#xff1a; 入门教程&#xff1a; 读取图片&#xff1a; Unity读取图片并显示到UI中 显示双目相机&#xff0c;可以跑通 unity3d显示图片 参考教程&#xff0c;GameObject Unity UGUI的Image&#xff08;图片&#xff09;组件的介绍及…

基于无线传感器网络的LC-DANSE波束形成算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1LC-DANSE算法原理 4.2 LCMV算法原理 5.完整程序 1.程序功能描述 在无线传感器网络中&#xff0c;通过MATLAB对比LC-DANSE波束形成算法和LCMV波束形成算法。对比SNR&#xff0c;mse等指标…

Day45- 动态规划part13

一、最长递增子序列 题目一&#xff1a;300. 最长递增子序列​​​​​​​ ​​​​​​​300. 最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数…

Java中的IO介绍

本章内容 一 、File概念 File可以代表一个目录或者一个文件&#xff0c;并不能代表文件的内容 文件和流的区别&#xff1a;File关注的是文件本身的特征&#xff0c;如名称、路径、修改时间、大小。 流关注的是文件的内容。 二、File基本的操作 常见构造方法 | File(String p…

以用户为中心,酷开科技荣获“消费者服务之星”

在企业顺应消费升级的道路中&#xff0c;企业自身不仅要着力强化对于消费者服务意识的提升&#xff0c;并且要树立诚信自律的行业示范带头作用&#xff0c;助力消费环境稳中向好&#xff0c;不断满足人民群众对美好生活的期待。企业的发展需要消费者的认可&#xff0c;酷开科技…