1. 添加docker插件
在pom.xml中添加如下配置:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile-maven-version}</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
2. 添加dockerfile
FROM openjdk:11-jre
ARG JAR_FILE
ENV PROFILE default
ENV JAVA_OPTS -server
ENTRYPOINT java -Dspring.profiles.active=${PROFILE} -Duser.timezone=Asia/Shanghai ${JAVA_OPTS} -jar /usr/share/app.jar
EXPOSE 8001
ADD target/${JAR_FILE} /usr/share/app.jar
3 添加k8s注册中心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-all</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
loadbalancer依赖要加上,否则会发现不了服务
4 编译并生成镜像
mvn package -DskipTests dockerfile:push
5 部署到k8s
deployment=gateway
deploy_server=192.168.1.82
ssh root@$deploy_server kubectl --namespace=dev scale deployment $deployment --replicas 0
ssh root@$deploy_server kubectl --namespace=dev scale deployment $deployment --replicas 1