一、 方式
- docker-maven-plugin插件构建docker镜像有两种方式:
- 指定参数,由docker-maven-plugin插件根据这些参数来制作镜像
<plugins>
<!--这是原有的spring boot插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--新增的docker maven插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<!--docker镜像相关的配置信息-->
<configuration>
<!--镜像名,这里用工程名-->
<imageName>${project.artifactId}</imageName>
<!--TAG,这里用工程版本号-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!--镜像的FROM,使用java官方镜像-->
<baseImage>java:8u111-jdk</baseImage>
<!--该镜像的容器启动后,直接运行spring boot工程-->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!--构建镜像的配置信息-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
- 指定Dockerfile,主要添加了 指定 Dockerfile 的位置
FROM anapsix/alpine-java:8
MAINTAINER testuer
VOLUME /tmp
ADD gajcz-auth-0.0.1-SNAPSHOT.jar app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo 'Asia/Shanghai' >/etc/timezone
EXPOSE 8531
ENTRYPOINT ["java","-jar","-Duser.timezone=Asia/Shanghai","app.jar"]
说明
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker的maven插件,官网:https://github.com/spotify/docker‐maven‐plugin-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--镜像名称-->
<!--<imageName>${project.artifactId}:${project.version}</imageName>-->
<imageName>192.168.25.131:4000/${project.artifactId}:${project.version}</imageName>
<!--插件读取Dockerfile进行构建不再指定baseImage和entrypoint,而是使用dockerDirectory指定Dockerfile所在的路径-->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<!--用于指定需要复制的根目录,表示target目录。-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件,指的是打包后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.25.131:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
运行打包镜像并且推送到仓库
mvn clean package docker:build ‐DpushImage