Spring Boot打包成Docker镜像
首先创建Dockerfile文件
在main目录下创建docker文件夹,再在此文件夹下创建Dockerfile文件
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD controller-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
PS:关于Dockerfile的相关知识自行百度
在maven里配置docker-maven-plugin插件
<build>
<plugins>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<!--将插件绑定在package phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 指定生成的镜像名 -->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!-- 指定 Dockerfile 路径 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- 指定镜像tags -->
<imageTags>${project.version}</imageTags>
<!-- 指定远程 docker 地址 -->
<dockerHost>http://localhost:2375</dockerHost>
<!-- 复制 jar 包到 docker 容器目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!-- 指定jar包所在的路径 对应 target 目录-->
<directory>${project.build.directory}</directory>
<!-- 指定 jar 包名称 ,对应 Dockerfile 中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- docker push到DockerHub的配置,这儿用不到。 -->
<!--<serverId>docker-hub</serverId> -->
<!--<registryUrl>https://index.docker.io/v1</registryUrl>-->
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>
需要注意的问题
1.出现错误
Can not construct instance of com.spotify.docker.client.messages.RegistryAuth: no String-argument constructor/factory method to deserialize from String value ('desktop')
出现这个错误我的解决办法是把docker-maven-plugin版本改为0.4.13
2.记得把2375端口打开
这儿就看Windows版的docker,Linux的请自行百度