当前位置: 首页 > news >正文

南宁网站建公司吗微信公众 号平台官网

南宁网站建公司吗,微信公众 号平台官网,网站内链技巧,wordpress 渲染html背景 最近做大疆项目时,后台更新部署时,机场和无人机就会掉线。设备自动重连注册时间比较长,应用长时间不可用。所以需要灰色发布服务。docker-compose的swarm模式可解决此问题。 服务构建脚本Dockerfile # 使用官方Java基础镜像&#xff…

背景

最近做大疆项目时,后台更新部署时,机场和无人机就会掉线。设备自动重连注册时间比较长,应用长时间不可用。所以需要灰色发布服务。docker-compose的swarm模式可解决此问题。

服务构建脚本Dockerfile

# 使用官方Java基础镜像(推荐选择Alpine轻量版)
FROM openjdk:17-jdk-alpine
# 更新时区
RUN apk add --no-cache tzdata
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone \
# 设置工作目录
WORKDIR /app# 将JAR文件复制到容器中(注意替换为你的JAR文件名)
COPY ./*.jar /app/
COPY ./lib/*.jar /app/lib/ARG JAVA_OPTS="-server -Xmx512m -Xms512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256M -Xss256k -XX:+DisableExplicitGC -XX:+UseG1GC -XX:LargePageSizeInBytes=128m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dumps/oom_dump.hprof -Djava.security.egd=file:/dev/./urandom"RUN mkdir -p /app/dumps
RUN mkdir -p /app/logs
# 启动命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/${project.build.finalName}.jar > /app/logs/${project.build.finalName}.log 2>&1"]

容器编排配置docker-compose.yml

下面的内容没有一行是多余的,修改时要慎重考虑

version: '3.8'
networks:${project.artifactId}-stack-proxy-tier: # 自定义的网络名称(可任意定义,但是需要提前创建)external: trueservices:${project.artifactId}: #docker应用服务名称,不能包含非法字符比如点image: ${project.build.finalName}:${project.version}deploy:replicas: 2  # 至少保持2个副本update_config:parallelism: 1    # 每次更新1个实例delay: 10s        # 新实例启动间隔order: start-first # 先启动新实例,再停止旧实例restart_policy:condition: anyhealthcheck:test: ["CMD-SHELL", "wget -q --spider http://localhost:23111/actuator/health || exit 1"]interval: 10stimeout: 5sretries: 3start_period: 20svolumes:- ./${project.build.finalName}.jar:/app/${project.build.finalName}.jar- ./lib:/app/libenvironment:- VIRTUAL_HOST=192.168.1.4 # ip或者域名- VIRTUAL_PORT=23111 # 应用启动的端口networks:- ${project.artifactId}-stack-proxy-tier# 配置Nginx反向代理nginx:image: jwilder/nginx-proxy #专应用docker负载均衡、服务发现额镜像,功能非常强大environment:- TZ=Asia/Shanghai- HTTP_CHECK=/"actuator/health"ports:- "22011:80"volumes:- /var/run/docker.sock:/tmp/docker.sock:ronetworks:- ${project.artifactId}-stack-proxy-tierdepends_on:- ${project.artifactId}

启动脚本restart

linux

#!/bin/bash# 设置脚本在遇到错误时立即退出
set -einit(){docker swarm init# 检查Overlay网络是否存在‌:ml-citation{ref="3,4" data="citationList"}if [[ -z $(docker network ls --filter name=^${project.artifactId}-stack-proxy-tier$ --format '{{.Name}}') ]]; thenecho "Creating overlay network..."docker network create --driver overlay --attachable ${project.artifactId}-stack-proxy-tierelseecho "Network ${project.artifactId}-stack-proxy-tier already exists, skipping creation."fideploy
}restart(){deploy
}deploy() {# 构建Docker镜像docker build -t ${project.build.finalName}:${project.version} .# 部署Docker堆栈docker stack deploy --detach=false -c docker-compose.yml ${project.artifactId}-stack
}remove() {#删除堆栈docker stack rm ${project.artifactId}-stack#删除网络docker network rm ${project.artifactId}-stack-proxy-tier
}case $1 ininit) init;;restart)  restart;;remove)  status;;*)  echo "require init|restart|remove";;
esac

windows

@echo off
setlocal enabledelayedexpansionif "%1"=="init" goto init
if "%1"=="restart" goto restart
if "%1"=="remove" goto remove
echo require init^|restart^|remove
exit /b 1:init
docker swarm init
for /f "tokens=*" %%i in ('docker network ls --filter name^^=^${project.artifactId}-stack-proxy-tier$ --format "{{.Name}}"') do set network=%%i
if "!network!"=="" (echo Creating overlay network...docker network create --driver overlay --attachable ${project.artifactId}-stack-proxy-tier
) else (echo Network ${project.artifactId}-stack-proxy-tier already exists, skipping creation.
)
goto deploy:restart
goto deploy:deploy
docker build -t ${project.build.finalName}:${project.version} .
docker stack deploy --detach=false -c docker-compose.yml ${project.artifactId}-stack
exit /b 0:remove
docker stack rm ${project.artifactId}-stack
docker network rm ${project.artifactId}-stack-proxy-tier
exit /b 0

整合maven

上面脚本配置中的类似${project.build.finalName}变量是需要maven在构建时替换的。
resources进行替换,打包工具我用的maven-assembly-plugin,根据项目自行替换

<build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource><resource><directory>src/assembly/docker</directory><includes><include>docker-compose.yml</include><include>Dockerfile</include><include>restart.sh</include><include>restart.bat</include><include>nginx.conf</include></includes><filtering>true</filtering></resource></resources><plugin><!-- 配置打包文件 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.6.0</version><configuration><descriptors><descriptor>src/assembly/distribution.xml</descriptor></descriptors><finalName>${project.artifactId}-${project.version}</finalName></configuration><executions><execution><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin><plugin><!-- 配置启动入口 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.2</version><configuration><archive><manifest><mainClass>com.dji.sample.CloudApiSampleApplication</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib</classpathPrefix></manifest></archive></configuration></plugin></plugins></build>

我所有的脚本以及配置文件是放在src/assembly/docker下的
在这里插入图片描述
maven构建配置distribution.xml

<?xml version="1.0" encoding="UTF-8"?>
<assemblyxmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"><id>package</id><formats><format>zip</format></formats><includeBaseDirectory>false</includeBaseDirectory><fileSets><fileSet><directory>target</directory><outputDirectory>./</outputDirectory><includes><include>*.jar</include></includes></fileSet><fileSet><directory>target/classes</directory><outputDirectory>./</outputDirectory><includes><include>docker-compose.yml</include><include>Dockerfile</include><include>restart.sh</include><include>restart.bat</include><include>nginx.conf</include></includes></fileSet></fileSets><dependencySets><dependencySet><outputDirectory>lib</outputDirectory></dependencySet></dependencySets>
</assembly>

docker容器启动

首次部署命令

restart.bat init

重启命令

restart.bat restart

删除命令(仅限调试)

restart.bat remove

修改镜像版本

每次更新时需要修改项目的版本号${revision}
在这里插入图片描述

http://www.15wanjia.com/news/193765.html

相关文章:

  • 廊坊网站建设团队网站空间管理系统
  • 彩票网站开发需求文档秦皇岛十大必去景点
  • 网站seo优化方案项目策划书免费logo设计在线设计
  • 织梦 xml网站地图做外贸的网站简称为什么网站
  • 信用网站建设工作简报高端品牌网站建设定位
  • 西安网站外包大气微电影类网站织梦模板完整版
  • 手机网站开源模板公司用wordpress建站用花钱
  • 重庆网站建设jwzcqpw网站更换域名
  • 网站页面构成要素网站开发代理合同
  • 3000元网站建设三年主题网站设计与制作
  • 广东seo推广多少钱杭州seo优化公司
  • 威海网站开发制作网站正在建设
  • 网站图片不是本站的对seo有什么不好app软件开发工具包
  • 做circrna的网站网站开发软件中文版
  • 专门做网站需要敲代码么如何检查网站死链
  • 推广赚佣金项目网站建设优化是什么鬼
  • 如何做h5 网站wordpress网站网页加密
  • 做网站接私活价格怎么算网站 医院信息化建设
  • aspcms手机网站怎么做源码之家的模板怎么用
  • 网站支付怎么做安全吗网站建设与推广实训报告册
  • 长春移动网站建设大江网站建设
  • 专做酒的小程序网站云服务器做的网站需要备案
  • 成都网站建设成功案例单招网辽宁省工程建设信息网官网
  • 网站开发容易做吗sem代运营公司
  • 织梦是什么网站南京网站维护公司
  • 江西省水利水电建设集团招标网站百度推广怎么做网站的优化
  • 苏州商城网站建设东莞网站制作网站设计
  • 广州企业网站厦门网站建设外包公司
  • 软件开发的外包公司搜索引擎优化的含义和目标
  • 徐州最好网站建设博物馆网站建设的目标