java项目集成nacos,实现配置加载以及服务子发现


背景

业务需要,新建了一个接口代理转发模块。有如下配置:

src/main/resources/application.yml

Markup 全选
server:
  port: 9270

proxy:
  target-url: https://www.***.com/product/api  # 目标服务器地址
  api-key: xbY1*******************RqxV6  # API密钥
  user: m****
  password: 123456
  source-urls: 
    - https://www.***.com/product/api
    - https://120.68.94.123:29110/product/api
  replace-url: http://127.0.0.1:9270  # 代理服务器地址

目标

  1. nacos配置读取,服务自发现
  2. 改造项目docker部署以及Jenkins流水线配置

一、nacos集成

1.1 nacos添加配置

java项目集成nacos,实现配置加载以及服务子发现

Data id要和下面的bootstrap.ymlspring.application.name保持一致,不然会取不到配置

1.2 项目添加依赖引用

pom.xml中添加nacos相关依赖。

XML 全选
<properties>
	<com-alibaba-cloud.version>2.2.5.RELEASE</com-alibaba-cloud.version>
</properties>
XML 全选
<dependencies>
	<!-- SpringCloud Ailibaba Nacos -->
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		<version>${com-alibaba-cloud.version}</version>
	</dependency>

	<!-- SpringCloud Ailibaba Nacos Config -->
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		<version>${com-alibaba-cloud.version}</version>
	</dependency>
</dependencies>

1.3 删除application.yml中的配置

因为配置要从nacos中获取,因此从application.yml中删除相关配置

java项目集成nacos,实现配置加载以及服务子发现

1.4 新建bootstrap.yml文件

文件名: src/main/resources/bootstrap.yml

文件内容

Markup 全选
spring:
  application:
    name: proxy-epicor
  cloud:
    nacos:
      config:
        # 配置中心地址
        server-addr: ${nacos.config.server-addr}
        namespace: ${nacos.config.namespace}
        group: ${nacos.config.group}
        # 配置文件格式
        file-extension: yaml
      discovery:
        # 服务注册地址
        server-addr: ${nacos.discovery.server-addr}
        namespace: ${nacos.discovery.namespace}

spring.application.name 要和nacos中配置的 data id 保持一致。不然无法正确获取配置

1.5 修改IDEA的运行/调试配置

java项目集成nacos,实现配置加载以及服务子发现

java项目集成nacos,实现配置加载以及服务子发现

java项目集成nacos,实现配置加载以及服务子发现

java项目集成nacos,实现配置加载以及服务子发现

配置如下:

Markup 全选
-Dspring.profiles.active=dev
-Dserver.port=9270
-Dnacos.config.server-addr=192.168.10.100:8848
-Dnacos.config.namespace=smartinsight-dev
-Dnacos.config.group=SMARTINSIGHT_GROUP
-Dnacos.discovery.namespace=smartinsight-dev
-Dnacos.discovery.server-addr=192.168.10.100:8848

1.6 在启动类上添加@EnableDiscoveryClient注解

java项目集成nacos,实现配置加载以及服务子发现

如果报错。是因为依赖没有刷新。执行一下 maven clean install 即可

java项目集成nacos,实现配置加载以及服务子发现

java项目集成nacos,实现配置加载以及服务子发现

1.7 启动项目,测试配置参数是否正确加载

java项目集成nacos,实现配置加载以及服务子发现

nacos服务中也可以看到proxy-epicor的服务节点

java项目集成nacos,实现配置加载以及服务子发现

java项目集成nacos,实现配置加载以及服务子发现

二、项目Docker编译以及Jenkins流水线配置

2.1 Docker镜像build改造

编译docker镜像需要

修改pom.xml文件

build节点中添加一个plugin

XML 全选
<!-- 构建配置 -->
<build>
	<plugins>
		<!-- Spring Boot Maven插件 -->
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<excludes>
					<!-- 排除Lombok依赖,避免打包到最终jar中 -->
					<exclude>
						<groupId>org.projectlombok</groupId>
						<artifactId>lombok</artifactId>
					</exclude>
				</excludes>
			</configuration>
		</plugin>

		<!-- Docker Maven插件 - 用于构建Docker镜像 -->
		<plugin>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>1.2.0</version>
			<configuration>
				<!-- Docker镜像名称 -->
				<imageName>${docker.imageName}</imageName>
				<!-- Docker镜像标签 -->
				<imageTags>
					<imageTag>${docker.imageTag}</imageTag>
				</imageTags>
				<!-- Dockerfile所在目录 -->
				<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
				<!-- Docker构建参数 -->
				<buildArgs>
					<!-- 环境配置 -->
					<ARG_PROFILE_ENV>${package.environment}</ARG_PROFILE_ENV>
					<!-- JVM启动参数 -->
					<ARG_JAVA_OPTS>${docker.buildArgs.javaOpts}</ARG_JAVA_OPTS>
					<!-- 服务名称 -->
					<ARG_SERVICE_NAME>${project.artifactId}</ARG_SERVICE_NAME>
					<!-- 服务端口 -->
					<ARG_PORT>${docker.port}</ARG_PORT>
					<!-- 版本号 -->
					<ARG_VERSION>${project.version}</ARG_VERSION>
				</buildArgs>
				<!-- 构建资源文件 -->
				<resources>
					<resource>
						<targetPath>/</targetPath>
						<directory>${project.build.directory}</directory>
						<include>*.zip</include>
					</resource>
				</resources>
			</configuration>
		</plugin>
		
		<!-- Maven Assembly插件 - 用于生成zip包 -->
		<plugin>
			<artifactId>maven-assembly-plugin</artifactId>
			<executions>
				<execution>
					<phase>package</phase>
					<goals>
						<goal>single</goal>
					</goals>
					<configuration>
						<!-- 最终文件名格式:项目名-版本-环境 -->
						<finalName>${project.artifactId}-${project.version}-${package.environment}</finalName>
						<!-- 不追加assemblyId到文件名 -->
						<appendAssemblyId>false</appendAssemblyId>
						<!-- 使用自定义的assembly描述文件 -->
						<descriptors>
							<descriptor>src/assembly/assembly-descriptor.xml</descriptor>
						</descriptors>
					</configuration>
				</execution>
			</executions>
		</plugin>

		<!-- Maven Deploy插件 - 用于部署到远程仓库 -->
		<plugin>
			<artifactId>maven-deploy-plugin</artifactId>
			<version>2.8.2</version>
			<configuration>
				<!-- 跳过部署,避免意外发布 -->
				<skip>true</skip>
			</configuration>
		</plugin>

		<!-- Maven Source插件 - 用于生成源码包 -->
		<plugin>
			<artifactId>maven-source-plugin</artifactId>
			<configuration>
				<!-- 跳过源码包生成 -->
				<skipSource>true</skipSource>
			</configuration>
		</plugin>
	</plugins>
</build>

添加 profiles配置

XML 全选
<profiles>
	<profile>
		<!-- for open source usage -->
		<id>dev</id>
		<properties>
			<package.environment>dev</package.environment>
			<docker.port>9270</docker.port>
			<docker.imageTag>${project.version}</docker.imageTag>
			<docker.imageName>crpi-****.cn-hangzhou.personal.cr.aliyuncs.com/smart_insight/proxy-epicor:${docker.imageTag}</docker.imageName>
			<docker.buildArgs.javaOpts>-Dactive_profile=dev -Dnacos.config.server-addr=192.168.10.100:8848 -Dnacos.config.namespace=smartinsight-dev -Dnacos.config.group=SMARTINSIGHT_GROUP -Dnacos.discovery.server-addr=192.168.10.100:8848 -Dnacos.discovery.namespace=smartinsight-dev</docker.buildArgs.javaOpts>
		</properties>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
	</profile>
</profiles>

添加 Maven仓库配置

XML 全选
<!-- Maven仓库配置 -->
<repositories>
	<!-- 公共仓库 -->
	<repository>
		<id>maven-public</id>
		<!-- <url>http://maven.aihomcloud.com/repository/maven-public/</url> -->
		<url>http://192.168.10.100:8081/repository/maven-public/</url>
	</repository>
</repositories>

<!-- 发布仓库配置 -->
<distributionManagement>
	<!-- 正式版本发布仓库 -->
	<repository>
		<id>maven-releases</id>
		<name>Nexus Release Repository</name>
		<!-- <url>http://maven.aihomcloud.com/repository/maven-releases/</url> -->
		<url>http://192.168.10.100:8081/repository/maven-releases/</url>
	</repository>
	<!-- 快照版本发布仓库 -->
	<snapshotRepository>
		<id>maven-snapshots</id>
		<name>Nexus Snapshot Repository</name>
		<!-- <url>http://maven.aihomcloud.com/repository/maven-snapshots/</url> -->
		<url>http://192.168.10.100:8081/repository/maven-snapshots/</url>
	</snapshotRepository>
</distributionManagement>

完整的pom.xml

XML 全选
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 项目基本信息 -->
    <groupId>com.proxy</groupId>
    <artifactId>proxy-epicor</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 继承Spring Boot父项目 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.7.RELEASE</version>
    </parent>

    <!-- 项目属性配置 -->
    <properties>
        <java.version>1.8</java.version>
        <com-alibaba-cloud.version>2.2.5.RELEASE</com-alibaba-cloud.version>
    </properties>

    <!-- 项目依赖 -->
    <dependencies>
        <!-- Spring Boot Web启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Spring Boot Actuator监控启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- Lombok简化代码工具 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- 阿里云Nacos服务发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>${com-alibaba-cloud.version}</version>
        </dependency>

        <!-- 阿里云Nacos配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>${com-alibaba-cloud.version}</version>
        </dependency>
    </dependencies>

    <!-- 构建配置 -->
    <build>
        <plugins>
            <!-- Spring Boot Maven插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <!-- 排除Lombok依赖,避免打包到最终jar中 -->
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!-- Docker Maven插件 - 用于构建Docker镜像 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <!-- Docker镜像名称 -->
                    <imageName>${docker.imageName}</imageName>
                    <!-- Docker镜像标签 -->
                    <imageTags>
                        <imageTag>${docker.imageTag}</imageTag>
                    </imageTags>
                    <!-- Dockerfile所在目录 -->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                    <!-- Docker构建参数 -->
                    <buildArgs>
                        <!-- 环境配置 -->
                        <ARG_PROFILE_ENV>${package.environment}</ARG_PROFILE_ENV>
                        <!-- JVM启动参数 -->
                        <ARG_JAVA_OPTS>${docker.buildArgs.javaOpts}</ARG_JAVA_OPTS>
                        <!-- 服务名称 -->
                        <ARG_SERVICE_NAME>${project.artifactId}</ARG_SERVICE_NAME>
                        <!-- 服务端口 -->
                        <ARG_PORT>${docker.port}</ARG_PORT>
                        <!-- 版本号 -->
                        <ARG_VERSION>${project.version}</ARG_VERSION>
                    </buildArgs>
                    <!-- 构建资源文件 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>*.zip</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            
            <!-- Maven Assembly插件 - 用于生成zip包 -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <!-- 最终文件名格式:项目名-版本-环境 -->
                            <finalName>${project.artifactId}-${project.version}-${package.environment}</finalName>
                            <!-- 不追加assemblyId到文件名 -->
                            <appendAssemblyId>false</appendAssemblyId>
                            <!-- 使用自定义的assembly描述文件 -->
                            <descriptors>
                                <descriptor>src/assembly/assembly-descriptor.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Maven Deploy插件 - 用于部署到远程仓库 -->
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <configuration>
                    <!-- 跳过部署,避免意外发布 -->
                    <skip>true</skip>
                </configuration>
            </plugin>

            <!-- Maven Source插件 - 用于生成源码包 -->
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <configuration>
                    <!-- 跳过源码包生成 -->
                    <skipSource>true</skipSource>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    <!-- Maven Profile配置 -->
    <profiles>
        <!-- 开发环境配置 -->
        <profile>
            <id>dev</id>
            <properties>
                <!-- 打包环境标识 -->
                <package.environment>dev</package.environment>
                <!-- Docker容器端口 -->
                <docker.port>9270</docker.port>
                <!-- Docker镜像标签 -->
                <docker.imageTag>${project.version}</docker.imageTag>
                <!-- Docker镜像完整名称 -->
                <docker.imageName>crpi-***.cn-hangzhou.personal.cr.aliyuncs.com/smart_insight/proxy-epicor:${docker.imageTag}</docker.imageName>
                <!-- Docker构建时的JVM参数 -->
                <docker.buildArgs.javaOpts>-Dactive_profile=dev -Dnacos.config.server-addr=192.168.10.100:8848 -Dnacos.config.namespace=smartinsight-dev -Dnacos.config.group=SMARTINSIGHT_GROUP -Dnacos.discovery.server-addr=192.168.10.100:8848 -Dnacos.discovery.namespace=smartinsight-dev</docker.buildArgs.javaOpts>
            </properties>
            <!-- 默认激活此profile -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>
    
    <!-- Maven仓库配置 -->
    <repositories>
        <!-- 公共仓库 -->
        <repository>
            <id>maven-public</id>
            <!-- <url>http://maven.aihomcloud.com/repository/maven-public/</url> -->
            <url>http://192.168.10.100:8081/repository/maven-public/</url>
        </repository>
    </repositories>
    
    <!-- 发布仓库配置 -->
    <distributionManagement>
        <!-- 正式版本发布仓库 -->
        <repository>
            <id>maven-releases</id>
            <name>Nexus Release Repository</name>
            <!-- <url>http://maven.aihomcloud.com/repository/maven-releases/</url> -->
            <url>http://192.168.10.100:8081/repository/maven-releases/</url>
        </repository>
        <!-- 快照版本发布仓库 -->
        <snapshotRepository>
            <id>maven-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <!-- <url>http://maven.aihomcloud.com/repository/maven-snapshots/</url> -->
            <url>http://192.168.10.100:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
</project> 

2.2 添加启动脚本文件 src/main/scripts/startup.sh

docker容器需要这个启动脚本

java项目集成nacos,实现配置加载以及服务子发现

文件内容

PowerShell 全选
#!/bin/bash

## Adjust memory settings if necessary
#export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"

## Only uncomment the following when you are using server jvm
#export JAVA_OPTS="$JAVA_OPTS -server -XX:-ReduceInitialCardMarks"

#export JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom"
#export JAVA_OPTS="$JAVA_OPTS -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"

PATH_TO_JAR=$SERVICE_NAME".jar"

cd `dirname $0`/..

for i in `ls $SERVICE_NAME-*.jar 2>/dev/null`
do
    if [[ ! $i == *"-sources.jar" ]]
    then
        PATH_TO_JAR=$i
        break
    fi
done

ulimit -c unlimited

if [[ ! -f PATH_TO_JAR && -d current ]]; then
    cd current
    for i in `ls $SERVICE_NAME-*.jar 2>/dev/null`
    do
        if [[ ! $i == *"-sources.jar" ]]
        then
            PATH_TO_JAR=$i
            break
        fi
    done
fi

if [[ -f $SERVICE_NAME".jar" ]]; then
  rm -rf $SERVICE_NAME".jar"
fi

printf "$(date) ==== Starting ==== \n"

ln $PATH_TO_JAR $SERVICE_NAME".jar"
chmod a+x $SERVICE_NAME".jar"

echo "java -jar ${JAVA_OPTS//+/ } $SERVICE_NAME.jar"
eval "java -jar ${JAVA_OPTS//+/ } $SERVICE_NAME.jar"

printf "\n$(date) Server started!\n"

exit 0;

2.3 添加src/main/docker目录

添加两个文件

src/main/docker/.dockerignore

src/main/docker/Dockerfile

java项目集成nacos,实现配置加载以及服务子发现

.dockerignore根据需要添加,本项目不需要忽略文件,因此内容为空就行

Dockerfile文件内容如下:

Markup 全选
FROM crpi-******.cn-hangzhou.personal.cr.aliyuncs.com/smart_insight/openjdk-build:9

LABEL name="GarsonZhang"
LABEL email="garson_zhang@163.com"

ARG ARG_PROFILE_ENV
ARG ARG_JAVA_OPTS
ARG ARG_SERVICE_NAME
ARG ARG_PORT
ARG ARG_VERSION

ENV SERVICE_NAME ${ARG_SERVICE_NAME}
ENV PORT ${ARG_PORT}
ENV VERSION ${ARG_VERSION}
ENV PROFILE_ENV ${ARG_PROFILE_ENV}
ENV JAVA_OPTS ${ARG_JAVA_OPTS}

ADD ${SERVICE_NAME}-${VERSION}-${PROFILE_ENV}.zip /${SERVICE_NAME}/${SERVICE_NAME}-${VERSION}-${PROFILE_ENV}.zip

RUN unzip /${SERVICE_NAME}/${SERVICE_NAME}-${VERSION}-${PROFILE_ENV}.zip -d /${SERVICE_NAME} \
    && rm -rf /${SERVICE_NAME}/${SERVICE_NAME}-${VERSION}-${PROFILE_ENV}.zip \
    && sed -i '$d' /${SERVICE_NAME}/scripts/startup.sh \
    && echo "tail -f /dev/null" >> /${SERVICE_NAME}/scripts/startup.sh \
    && cp /${SERVICE_NAME}/lib/read.md /usr/lib/read.md

RUN ["chmod", "a+x","-R", "/usr/lib/read.md"]

EXPOSE ${PORT}
CMD /${SERVICE_NAME}/scripts/startup.sh

2.4 添加settings.xml

jenkins流水线需要这个文件配置编译环境

java项目集成nacos,实现配置加载以及服务子发现

文件内容

XML 全选
<settings>
    <pluginGroups>
        <pluginGroup>org.jenkins-ci.tools</pluginGroup>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <!-- Give access to Jenkins plugins -->
        <profile>
            <id>jenkins</id>
            <activation>
                <activeByDefault>true</activeByDefault> <!-- change this to false, if you don't like to have it on per default -->
            </activation>
            <repositories>
                <repository>
                    <id>maven-public</id>
                    <url>http://192.168.10.100:8081/repository/maven-public/</url>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>maven-releases</id>
                    <url>http://192.168.10.100:8081/repository/maven-releases/</url>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>maven-snapshots</id>
                    <url>http://192.168.10.100:8081/repository/maven-snapshots/</url>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <servers>
        <server>
            <id>maven-releases</id>
            <username>***</username>
            <password>***</password>
        </server>
        <server>
            <id>maven-snapshots</id>
            <username>***</username>
            <password>***</password>
        </server>
    </servers>
    <mirrors>
        <mirror>
            <id>repo.jenkins-ci.org</id>
            <url>https://repo.jenkins-ci.org/public/</url>
            <mirrorOf>m.g.o-public</mirrorOf>
        </mirror>
    </mirrors>
</settings>

2.5 修改src/assembly/assembly-descriptor.xml

参考内容

XML 全选
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
    <id>package</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <!--scripts -->
        <fileSet>
            <directory>src/main/scripts</directory>
            <outputDirectory>scripts</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <!--artifact -->
        <fileSet>
            <directory>target</directory>
            <outputDirectory>${file.separator}</outputDirectory>
            <includes>
                <include>${project.artifactId}-*.jar</include>
            </includes>
            <fileMode>0755</fileMode>
        </fileSet>
<!--        <fileSet>-->
<!--            <directory>${project.build.directory}</directory>-->
<!--            <outputDirectory>/</outputDirectory>-->
<!--            <includes>-->
<!--                <include>*.jar</include>-->
<!--            </includes>-->
<!--        </fileSet>-->
    </fileSets>
</assembly> 

 

Jenkins构建作业

 

Docker部署

docker-compose.yml脚本

Ruby 全选
version: '3'
services:
    zhuoyu-proxy-epicor: 
        container_name: zhuoyu-proxy-epicor 
        image: crpi-***.cn-hangzhou.personal.cr.aliyuncs.com/smart_insight/proxy-epicor:latest
        restart: always
        ports: 
            - 18098:8080
        environment:
            - TZ=Asia/Shanghai
            - JAVA_OPTS=-Dspring.main.allow-bean-definition-overriding=true  -Dnacos.config.namespace=smartinsight-dev -Dnacos.config.group=SMARTINSIGHT_GROUP -Dnacos.config.server-addr=192.168.10.100:8848 -Dnacos.discovery.namespace=smartinsight-dev -Dnacos.discovery.server-addr=192.168.10.100:8848

Docker容器接口请求测试

Docker容器请求测试:

java项目集成nacos,实现配置加载以及服务子发现

nacos服务也有自动注册

java项目集成nacos,实现配置加载以及服务子发现

网关接口测试

添加网关

java项目集成nacos,实现配置加载以及服务子发现

重启网关docker容器

java项目集成nacos,实现配置加载以及服务子发现

 

 

 

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:SAP UI5 OData2
下一篇:没有了
评论列表

发表评论

评论内容
昵称:
关联文章

java项目集成nacos实现配置以及服务发现
ASP.NET+MVC入门踩坑笔记 (一) 创建项目 项目配置运行 以及简单的Api搭建
服务安装失败:未能文件或程序集
从数据库或者其他位置ASP.NET MVC Views 视图 数据库中加 cshtml
详解ElasticAPM实现服务的链路追踪(NET)
[WPF] 实现两个任天堂 Switch 的动画
git仓库模块(submodule)项目中的实战应用
使用.NET 6开发TodoList应用(10)——实现DELETE请求以及HTTP请求幂等性
C#的进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
WPF 组织机构摄像机树 全量 大数据量 分页摄像机节点
JAVA项目Jenkins构建记录
.NET中大型项目开发必备(10)--图片的裁剪、缩放、与水印
更改nacos的IP地址,IEDA项目调试时报错,显示IP地址还是旧的
.NET中大型项目开发必备(5)--Web服务/WebApi的负载均衡
IIS初始化(预),解决第一次访问慢,程序池被回收问题
MEF会缺少一些dll,
winform自定义控件(UserControl)慢的研究
.NET IIS第一次访问慢,程序池被回收问题,IIS初始化(启用预)
System.BadImageFormatException:“未能文件或程序集 或它的某一个依赖项。试图格式不正确的程序
.NET MVC从后台JS代码块

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码