使用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
推送到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