# DockerSpringBootPlugin
docker-maven-plugin 完全免Dockerfile 文件
使用docker-maven-plugin 進行完全免 Dockerfile 文件
注意 EXPOSE 在spring boot 中不起作用
詳細
https://github.com/spotify/docker-maven-plugin
本機不安裝 docker 連接其他主機或虛擬機
需要添加兩個額外配置
<dockerHost>https://ip:2376</dockerHost>
<dockerCertPath>證書地址</dockerCertPath>
這兩個地址可以 在 docker 環境變量中查詢到
如果是 docker-machine 創建的虛擬機 可以同 env 連接的的時候 會顯示
Mvnen :
構建鏡像
mvn clean package docker:build
構建鏡像並且推送到鏡像表
mvn clean package docker:build -DpushImage
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <!--<dockerDirectory>src/main/docker</dockerDirectory>--> <baseImage>java:8</baseImage> <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> </build>
建議
如果自己或公司的 docker鏡像倉庫 ${docker.image.prefix} 設置為自己的 自己的名稱 后續上傳的時候 就不需要 改名稱 了
如果自己不想搭建 公司也沒有 但是想 可以隨時獲取的 可以使用 阿里雲的 docker 鏡像管理
實例 GitHub https://github.com/atliwen/DockerSpringBootPlugin
使用私有 docker 鏡像倉庫
<properties>
<docker.maintainer>統一Manven 版本依賴</docker.maintainer>
<docker.imageName>parent</docker.imageName>
</properties>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId><configuration> <serverId>docker-hub</serverId> <registryUrl>https:<span style="color: #008000;">//</span><span style="color: #008000;">10.10.6.50:5000</registryUrl></span> <dockerHost>https:<span style="color: #008000;">//</span><span style="color: #008000;">10.10.12.205:2376</dockerHost></span> <dockerCertPath>C:\Users\admin\.docker\machine\machines\manager</dockerCertPath> <imageName>10.10.6.50:5000/${docker.imageName}:${project.version}</imageName> <baseImage>java:8</baseImage> <maintainer>${docker.maintainer}</maintainer> <volumes>/tmp</volumes> <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> </build></pre>
注意:
在子Maven 項目中 寫 定義 鏡像名稱 和項目名稱
docker 鏡像 TAG 為版本號 <version>0.0.1-SNAPSHOT</version>
<properties>
<docker.maintainer> EDI 訂單處理服務</docker.maintainer>
<docker.imageName>dj-atliwen-ediwebapi</docker.imageName>
</properties>
登錄私有鏡像倉庫的配置
<serverId>docker-hub</serverId> <registryUrl>https://10.10.6.50:5000</registryUrl>
serverId 是Maven 中的配置 配置 Maven settings.xml 中 server 節點
<servers>
<server>
<id>docker-hub</id>
<username>foo</username>
<password>secret-password</password>
<configuration>
<email>foo@foo.bar</email>
</configuration>
</server>
</servers>
// email 也是必須填寫的

