一. 背景
廢話少說,容器化部署應用現在已經是很普遍了,springboot也使用的普遍,那麼,如何快速將一個springboot項目打包成一個docker鏡像呢?還有一個問題就是,對於研發和測試來說 自己的電腦上基本上不會安裝Windows版本的docker,那麼怎樣實現在本地輸入一個命令後就直接將代碼打包成一個鏡像呢?本文講述瞭如何實現在本地簡單配置maven後利用遠程Linux服務器將springboot應用打包成docker鏡像並推送到鏡像倉庫
二. docker安裝及配置
1. docker安裝
docker如何安裝在這裏就不多說了 有問題的話可以看看這篇文章
2.開啓2375端口,提供外部訪問docker
編輯docker文件:/usr/lib/systemd/system/docker.service,命令如下
vi /usr/lib/systemd/system/docker.service
修改ExecStart行,增加內容 -H tcp://0.0.0.0:2375 ,修改後如下:
重新加載docker配置
systemctl daemon-reload
systemctl restart docker
配置完成後 瀏覽器訪問 http://192.168.30.108:2375/version
注:192.168.30.108爲遠程服務器的ip
如果界面顯示了docker的版本信息 則表示配置成功
三. dockerfile編寫
lz是這樣寫的 僅供參考
FROM java
LABEL MAINTANIER="xyl <[email protected]>"
ENV WORKDIR=/usr/local/share/goalgo/team-server
WORKDIR ${WORKDIR}
ADD *.jar ${WORKDIR}/
VOLUME ${WORKDIR}/logs
EXPOSE 80
CMD ["java","-Xms256m","-Xmx2048m","-Djava.security.egd=file:/dev/urandom","-jar","team-server-1.0-SNAPSHOT.jar","--server.port=80"]
dockerfile各個參數意思如下:
四.pom文件配置鏡像倉庫等信息
注:一下pom文件配置是不全的 主要將maven-docker插件的配置給出來了
<properties>
<!--docker鏡像倉庫的路徑-->
<docker.repository.url>reg.our51.com</docker.repository.url>
<!---鏡像倉庫的命名空間即 項目名-->
<docker.repository.namespace>goalgo</docker.repository.namespace>
<!--對應maven setting.xml中的配置 請看本文標題五-->
<docker.repository.serverId>docker-goalgo</docker.repository.serverId>
<!--編譯docker鏡像的主機-->
<docker.host>http://192.168.30.108:2375</docker.host>
</properties>
<dependencies>
...
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<forceTags>true</forceTags>
<pushImage>true</pushImage>
<imageName>
${docker.repository.url}/${docker.repository.namespace}/${project.artifactId}:${version}
</imageName>
<serverId>${docker.repository.serverId}</serverId>
<registryUrl>${docker.repository.url}</registryUrl>
<dockerDirectory>src/main</dockerDirectory>
<dockerHost>${docker.host}</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
五.maven配置
找到maven安裝目錄中的配置文件 修改setting.xml 配置server
六.執行打包
進入springboot項目目錄下 執行以下命令 進行打包
mvn clean package -Dmaven.test.skip=true -Dversion=lz070501 docker:build
注:-Dversion=lz070501 是指鏡像的版本號爲lz070501 如果遠程服務器上沒有jdk的鏡像 第一次打包會很慢 耐心等待即可
執行成功後 在docker服務器和鏡像倉庫上會看到docker這個docker鏡像
到此docker鏡像就製作完成啦,感謝您的閱讀,如有疑問請留言。