打包镜像并发布到nexus上
1. nexus 配置
启动8082端口
2. docker 启动2375端口
3. 工程配置maven
maven 内配置 settings.xml
<servers>
<server>
<id>docker-local</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
pom.xml 添加打包插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!-- 必须是 registryUrl nexus 中的Repositories name 对应好-->
<serverId>docker-local</serverId>
<registryUrl>http://192.168.9.82:8082</registryUrl>
<!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST)-->
<dockerHost>http://192.168.9.158:2375</dockerHost>
<!--指定基础镜像jdk1.8-->
<baseImage>openjdk:8</baseImage>
<imageName>192.168.9.82:8082/${project.artifactId}</imageName>
<!--指定标签 这里指定的是镜像的版本,默认版本是latest-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路径-->
<!--镜像制作人本人信息 -->
<maintainer>admin@admin.com</maintainer>
<!--切换到工作目录-->
<workdir>/ROOT</workdir>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "-Xms512m", "-Xmx512m", "${project.build.finalName}.jar"]</entryPoint>
<!-- jar包位置-->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!-- target目录下-->
<directory>${project.build.directory}</directory>
<!--通过jar包名找到jar包-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<executions>
<!-- package之前清除上一次构建的image -->
<execution>
<id>remove-image</id>
<phase>package</phase>
<goals>
<goal>removeImage</goal>
</goals>
<configuration>
<imageName>
192.168.9.82:8082/${project.artifactId}
</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
</configuration>
</execution>
<execution>
<id>remove-tag-image</id>
<phase>package</phase>
<goals>
<goal>removeImage</goal>
</goals>
<configuration>
<imageName>
192.168.9.82:8082/${project.artifactId}
</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
</configuration>
</execution>
<!-- 将docker:build绑定到package这个phase -->
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
<configuration>
<!-- imageName中若不指定tag,则会打上latest -->
<imageName>192.168.9.82:8082/${project.artifactId}:${project.version}</imageName>
<!-- 可以使用<imageTags>标签打其他额外的tag -->
</configuration>
</execution>
<!-- 将docker:tag绑定到package这个phase -->
<execution>
<id>tag-image</id>
<phase>package</phase>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<!-- docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG] -->
<!-- images与IMAGE[:TAG]对应,必须在build阶段已经构建了 -->
<image>192.168.9.82:8082/${project.artifactId}:${project.version}</image>
<!-- newName与tag命令的第二个参数对应 -->
<newName>
192.168.9.82:8082/${project.artifactId}:${project.version}
</newName>
</configuration>
</execution>
<execution>
<id>tag-image-latest</id>
<phase>package</phase>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<!-- docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG] -->
<!-- images与IMAGE[:TAG]对应,必须在build阶段已经构建了 -->
<image>192.168.9.82:8082/${project.artifactId}:${project.version}</image>
<!-- newName与tag命令的第二个参数对应 -->
<newName>
192.168.9.82:8082/${project.artifactId}:latest
</newName>
</configuration>
</execution>
<!-- 将docker:push绑定到deploy这个phase -->
<execution>
<id>push-image</id>
<phase>package</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<imageName>
192.168.9.82:8082/${project.artifactId}:${project.version}
</imageName>
</configuration>
</execution>
<execution>
<id>push-image-latest</id>
<phase>package</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<imageName>
192.168.9.82:8082/${project.artifactId}:latest
</imageName>
</configuration>
</execution>
</executions>
</plugin>
Spring boot application-ad.properties
server.port=2040
debug=true
logging.level.root=debug
logging.level.com.hello.b2c.user.mapper=trace
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.clickhouse-db.url=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.clickhouse-db.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.clickhouse-db.password=${MYSQL_PASSWORD}
spring.datasource.clickhouse-db.username=${MYSQL_USER}
spring.datasource.clickhouse-db.initialSize=10
spring.datasource.clickhouse-db.maxActive=10
spring.datasource.clickhouse-db.maxWait=6000
spring.datasource.clickhouse-db.validationQuery=select 1
spring.datasource.mysql-db.url=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.mysql-db.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.mysql-db.password=${MYSQL_PASSWORD}
spring.datasource.mysql-db.username=${MYSQL_USER}
spring.datasource.mysql-db.initialSize=10
spring.datasource.mysql-db.maxActive=10
spring.datasource.mysql-db.maxWait=6000
spring.datasource.mysql-db.validationQuery=select 1
spring.redis.host=${REDIS_HOST}
spring.redis.port=${REDIS_PORT}
spring.redis.password=admin
spring.redis.database=1
pacs.host=${PACS_HOST}
pacs.hostout=${PACS_HOSTOUT}
rocketmq.host=${ROCKETMQ_HOST}:${ROCKETMQ_PORT_TCP}
rocketmq.fileGroup=fileTest
rocketmq.fileTags=fileTest
rocketmq.fileTopic=fileTest
zookeeper.host=${ZOOKEEPER_HOST}:${ZOOKEEPER_PORT}
rocketmq.name-server=${ROCKETMQ_HOST}:${ROCKETMQ_PORT_TCP}
rocketmq.producer.sendMessageTimeout=300000