commit f34b598943af29cbe9510d61f84157f6a1f2301f Author: AaGMixW Date: Thu Feb 9 17:43:26 2023 +0800 feat: :fire: first commit first commit diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d78ef07 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,28 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +**/*.jar +service/opt/ +web/html/ +LICENSE +README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..54de20c --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +#编排容器 +docker-compose up -d --build +#打包镜像 +docker save -o military2.0.tar military-system:2.0 military-earth:2.0 military-web:2.0 +#导入镜像 +docker load -i military.tar + + +#运行后台镜像 +docker run -d --name military-system -p 8049:8049 -v \你自己的路径\application-prod.yml:/military/config/application-prod.yml -v \你自己的路径\opt\upFiles:/opt/upFiles military-system:2.0 +#运行前端服务镜像 +docker run -d --name military-web -p 3001:3001 military-web:2.0 +#运行地图服务镜像 +docker run -d --name military-earth -p 3000:3000 military-earth:2.0 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..826c3d0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' +services: + military-system: + build: service + restart: on-failure + ports: + - 8080:8080 + military-web: + build: web + restart: on-failure + ports: + - 8089:8089 \ No newline at end of file diff --git a/service/Dockerfile b/service/Dockerfile new file mode 100644 index 0000000..dbae733 --- /dev/null +++ b/service/Dockerfile @@ -0,0 +1,30 @@ +# Docker image for springboot file run +# VERSION 2.0 +# Author: bb + +# 指明当前镜像继承的基础镜像,编译当前镜像时候会自动下载基础镜像(仅第一次打包会下载) +# 基础镜像 +FROM openjdk:8-jdk-alpine + +VOLUME [ "/data" ] + +ARG JAVA_OPTS + +ENV JAVA_OPTS=$JAVA_OPTS + + +# 从当前工作目录复制文件到镜像目录中并重新命名 +COPY config /military/config +COPY military.jar /military/military.jar + +# 执行Linux命令,运行jar包 +# 设置时区 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone + +WORKDIR /military + +# 暴露端口 +EXPOSE 8080 + +# 启动容器时执行的Shell命令,同CMD类似 +ENTRYPOINT exec java ${JAVA_OPTS} -jar /military/military.jar \ No newline at end of file diff --git a/service/config/application-prod.yml b/service/config/application-prod.yml new file mode 100644 index 0000000..640466e --- /dev/null +++ b/service/config/application-prod.yml @@ -0,0 +1,359 @@ +server: + port: 8080 + tomcat: + max-swallow-size: -1 + error: + include-exception: true + include-stacktrace: ALWAYS + include-message: ALWAYS + servlet: + context-path: /military + compression: + enabled: true + min-response-size: 1024 + mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/* + +management: + endpoints: + web: + exposure: + include: metrics,httptrace + +spring: + servlet: + multipart: + max-file-size: 10MB + max-request-size: 10MB + mail: + host: smtp.163.com + username: jeecgos@163.com + password: ?? + properties: + mail: + smtp: + auth: true + starttls: + enable: true + required: true + ## quartz定时任务,采用数据库方式 + quartz: + job-store-type: jdbc + initialize-schema: embedded + #设置自动启动,默认为 true + auto-startup: true + #启动时更新己存在的Job + overwrite-existing-jobs: true + properties: + org: + quartz: + scheduler: + instanceName: MyScheduler + instanceId: AUTO + jobStore: + class: org.quartz.impl.jdbcjobstore.JobStoreTX + driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate + tablePrefix: QRTZ_ + isClustered: true + misfireThreshold: 60000 + clusterCheckinInterval: 10000 + threadPool: + class: org.quartz.simpl.SimpleThreadPool + threadCount: 10 + threadPriority: 5 + threadsInheritContextClassLoaderOfInitializingThread: true + #json 时间戳统一转换 + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + jpa: + open-in-view: false + activiti: + check-process-definitions: false + #启用作业执行器 + async-executor-activate: false + #启用异步执行器 + job-executor-activate: false + aop: + proxy-target-class: true + #配置freemarker + freemarker: + # 设置模板后缀名 + suffix: .ftl + # 设置文档类型 + content-type: text/html + # 设置页面编码格式 + charset: UTF-8 + # 设置页面缓存 + cache: false + prefer-file-system-access: false + # 设置ftl文件路径 + template-loader-path: + - classpath:/templates + # 设置静态文件路径,js,css等 + mvc: + static-path-pattern: /** + resource: + static-locations: classpath:/static/,classpath:/public/ + autoconfigure: + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure + datasource: + druid: + stat-view-servlet: + enabled: true + loginUsername: admin + loginPassword: 123456 + allow: + web-stat-filter: + enabled: true + dynamic: + druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置) + # 连接池的配置信息 + # 初始化大小,最小,最大 + initial-size: 5 + min-idle: 5 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 + filters: stat,wall,slf4j + # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 + connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + datasource: + master: + url: jdbc:mysql://192.168.1.200:3306/military_zgx?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + username: root + password: "123456" + driver-class-name: com.mysql.cj.jdbc.Driver + #redis 配置 + redis: + database: 0 + host: 192.168.1.200 + lettuce: + pool: + max-active: 8 #最大连接数据库连接数,设 -1 为没有限制 + max-idle: 8 #最大等待连接中的数量,设 0 为没有限制 + max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 + min-idle: 0 #最小等待连接中的数量,设 0 为没有限制 + shutdown-timeout: 100ms + password: '' + port: 6379 + #MongoDB 配置 + data: + mongodb: + uri: mongodb://admin:mongodb@192.168.1.200:27017/earthMap?authSource=admin&authMechanism=SCRAM-SHA-1 + +#mybatis plus 设置 +mybatis-plus: + mapper-locations: classpath*:com/zgx/modules/**/xml/*Mapper.xml,classpath*:com/zgx/iot/*/xml/*Mapper.xml + global-config: + # 关闭MP3.0自带的banner + banner: false + db-config: + #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)"; + id-type: ASSIGN_ID + # 默认数据库表下划线命名 + table-underline: true + configuration: + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 返回类型为Map,显示null对应的字段 + call-setters-on-nulls: true + +magic-api: + web: /magic/web + resource: + type: database # 配置接口存储方式,这里选择存在数据库中 + table-name: magic_api_file_v2 # 数据库中的表名 + prefix: /magic-api # 前缀 + +#jeecg专用配置 +minidao: + base-package: org.jeecg.modules.jmreport.* + #DB类型(mysql | postgresql | oracle | sqlserver| other) + db-type: mysql +jeecg: + # 本地:local\Minio:minio\阿里云:alioss + uploadType: local + path: + #文件上传根目录 设置 + upload: /opt/upFiles + #webapp文件路径 + webapp: /opt/webapp + shiro: + excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/** + #阿里云oss存储和大鱼短信秘钥配置 + oss: + accessKey: ?? + secretKey: ?? + endpoint: oss-cn-beijing.aliyuncs.com + bucketName: ?? + # ElasticSearch 6设置 + elasticsearch: + cluster-name: jeecg-ES + cluster-nodes: 127.0.0.1:9200 + check-enabled: false + # 表单设计器配置 + desform: + # 主题颜色(仅支持 16进制颜色代码) + theme-color: "#1890ff" + # 文件、图片上传方式,可选项:qiniu(七牛云)、system(跟随系统配置) + upload-type: system + map: + # 配置百度地图的AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home + baidu: ?? + # 在线预览文件服务器地址配置 + file-view-domain: 127.0.0.1:8012 + # minio文件上传 + minio: + minio_url: http://minio.jeecg.com + minio_name: ?? + minio_pass: ?? + bucketName: otatest + #大屏报表参数设置 + jmreport: + mode: dev + #数据字典是否进行saas数据隔离,自己看自己的字典 + saas: false + #是否需要校验token + is_verify_token: true + #必须校验方法 + verify_methods: remove,delete,save,add,update + #Wps在线文档 + wps: + domain: https://wwo.wps.cn/office/ + appid: ?? + appsecret: ?? + #xxl-job配置 + xxljob: + enabled: false + adminAddresses: http://127.0.0.1:9080/xxl-job-admin + appname: ${spring.application.name} + accessToken: '' + address: 127.0.0.1:30007 + ip: 127.0.0.1 + port: 30007 + logPath: logs/jeecg/job/jobhandler/ + logRetentionDays: 30 + #自定义路由配置 yml nacos database + route: + config: + data-id: jeecg-gateway-router + group: DEFAULT_GROUP + data-type: yml + #分布式锁配置 + redisson: + address: 127.0.0.1:6379 + password: + type: STANDALONE + enabled: true +#cas单点登录 +cas: + prefixUrl: http://cas.example.org:8443/cas +#Mybatis输出sql日志 +logging: + level: + com.zgx.modules.system.mapper: info +#swagger +knife4j: + production: false + basic: + enable: true + username: jeecg + password: jeecg1314 +#第三方登录 +justauth: + enabled: true + type: + GITHUB: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callback + WECHAT_ENTERPRISE: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback + agent-id: ?? + DINGTALK: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback + WECHAT_OPEN: + client-id: ?? + client-secret: ?? + redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback + cache: + type: default + prefix: 'demo::' + timeout: 1h +#第三方APP对接1 +third-app: + enabled: false + type: + #企业微信 + WECHAT_ENTERPRISE: + enabled: false + #CORP_ID + client-id: ?? + #SECRET + client-secret: ?? + #自建应用id + agent-id: ?? + #自建应用秘钥(新版企微需要配置) + # agent-app-secret: ?? + #钉钉 + DINGTALK: + enabled: false + # appKey + client-id: ?? + # appSecret + client-secret: ?? + agent-id: ?? +#zmq配置 +zmq: + ip: localhost + send-port: 5001 + recv-port: 5000 + rep-port: 5004 + topic: + warn-info: bhb_warn_info + model-info: bhb_model_trajectory_info + ais-info: ais + flag: + radar: false + wzd: false + video: false + model: false + ais: true + +#grpc配置 +grpc: + client: + GLOBAL: + negotiationType: PLAINTEXT + address: static://47.104.75.88:8508 +#mqtt +mqtt: + username: admin + password: public + cleanSession: true + serverURI1: tcp://localhost:1883 + clientId: iot_platform_2 + service: + topic: /v1.0.0/+/up/request,/v1.0.0/+/up/fault,/v1.0.0/+/up/alarm,/v1.0.0/+/up/cmd,/v1.0.0/+/down/heartbeat,/HtmlToPng/board +#看板地址 +basePath: http://host.docker.internal:8049/military +# 日志配置 +log: + path: /var/log/military + level: info \ No newline at end of file diff --git a/web/Dockerfile b/web/Dockerfile new file mode 100644 index 0000000..c6515ed --- /dev/null +++ b/web/Dockerfile @@ -0,0 +1,18 @@ +# Docker image for web file run +# VERSION 2.0 +# Author: bb + +# 指明当前镜像继承的基础镜像,编译当前镜像时候会自动下载基础镜像(仅第一次打包会下载) +# 基础镜像 +FROM nginx + +# config +COPY nginx.conf /etc/nginx +COPY conf.d /etc/nginx/conf.d +# 将html里的文件直接复制到nginx的html目录 +COPY html /usr/share/nginx/html + +# 暴露端口 +EXPOSE 8089 + +CMD "nginx" "-g" "daemon off;" \ No newline at end of file diff --git a/web/conf.d/default.conf b/web/conf.d/default.conf new file mode 100644 index 0000000..31f2cfb --- /dev/null +++ b/web/conf.d/default.conf @@ -0,0 +1,21 @@ +server { + listen 8089; + listen [::]:8089; + server_name localhost; + # 后台服务配置,配置了这个location便可以通过访问 + location ^~ /military { + proxy_pass http://military-system:8080/military/; + proxy_set_header Host $host:8089; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 + location / { + root /usr/share/nginx/html; + index index.html index.htm; + if (!-e $request_filename) { + rewrite ^(.*)$ /index.html?s=$1 last; + break; + } + } +} \ No newline at end of file diff --git a/web/nginx.conf b/web/nginx.conf new file mode 100644 index 0000000..3103a21 --- /dev/null +++ b/web/nginx.conf @@ -0,0 +1,89 @@ +user www-data; +worker_processes auto; +pid /run/nginx.pid; +include /etc/nginx/modules-enabled/*.conf; + +events { + worker_connections 768; + # multi_accept on; +} + +http { + + ## + # Basic Settings + ## + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + # server_tokens off; + + # server_names_hash_bucket_size 64; + # server_name_in_redirect off; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + ## + # SSL Settings + ## + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE + ssl_prefer_server_ciphers on; + + ## + # Logging Settings + ## + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + ## + # Gzip Settings + ## + gzip on; + gzip_min_length 1k; + gzip_comp_level 9; + gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; + gzip_vary on; + gzip_disable "MSIE [1-6]\."; + + # gzip_vary on; + # gzip_proxied any; + # gzip_comp_level 6; + # gzip_buffers 16 8k; + # gzip_http_version 1.1; + # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + ## + # Virtual Host Configs + ## + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-enabled/*; +} + + +#mail { +# # See sample authentication script at: +# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript +# +# # auth_http localhost/auth.php; +# # pop3_capabilities "TOP" "USER"; +# # imap_capabilities "IMAP4rev1" "UIDPLUS"; +# +# server { +# listen localhost:110; +# protocol pop3; +# proxy on; +# } +# +# server { +# listen localhost:143; +# protocol imap; +# proxy on; +# } +#}