使用fabric 8和maven结合,可以在使用maven构建应用时自动构建docker image。
编写Dockerfile
借用之前的Dockerfile,不过ADD
命令稍有不同,这里的路径是maven/for_docker-0.0.1-SNAPSHOT.jar
,因为使用下面的assembly
参数配置后,jar包会拷贝到docker build目录下。
#继承centos docker file
FROM centos
#安装JDK
RUN yum install -y java
#配置docker存储目录
VOLUME /tmp
#将maven目录的jar包拷贝到docker中,并命名为for_docker.jar
ADD maven/for_docker-0.0.1-SNAPSHOT.jar for_docker.jar
ENTRYPOINT ["java", "-jar", "/for_docker.jar"]
添加Fabric 8依赖
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.28.0</version>
<configuration>
<dockerHost>unix:///var/run/docker.sock</dockerHost>
<verbose>true</verbose>
<images>
<image>
<!--如果要推送到docker hub,这里需要使用 用户名 -->
<name>ted005/for_docker</name>
<build>
<!--Dockerfile所在目录-->
<dockerFileDir>${project.basedir}/src/main/docker/</dockerFileDir>
<!--将jar包拷贝到docker build目录中-->
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
<!--latest标签-->
<tags>
<tag>latest</tag>
</tags>
</build>
</image>
</images>
</configuration>
</plugin>
执行maven命令并构建docker image
mvn clean package docker:build
构建后的工程目录如下:可以看到Dockerfile
和maven
目录平级
推送到docker hub上
- 配置maven
settings.xml
文件:
<servers>
<server>
<id>docker.io</id>
<username>ted005</username>
<password>XXXXXX</password>
</server>
</servers>
- 执行命令
mvn clean package docker:build docker:push
-
在docker hub可以看到刚刚推送成功的docker image
docker hub
网友评论