使用docker-maven-plugin外掛將專案編譯為docker映象到遠端linux伺服器(非常有用)
在win10中使用idea開發一個模組化的maven專案,然後想要把該專案直接編譯到遠端Linux伺服器的Docker中,具體做法如下:
第一:在各模組中的pom檔案中加入以下
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<imageName>${project.name}:${project.version}</ imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<skipDockerBuild>false</skipDockerBuild>
<resources>
<resource>
<directory>${project.build.directory}</directory>
< include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
第二:在各模組的src/main下面,在src/main/docker下面新建Dockerfile與runboot.sh檔案(檔案內容因情況不同就不貼了),結構如下
第三:在linux伺服器上裝好docker,我的linux版本為centos7,這裡不建議使用#yum install docker方式安裝,因為這種方式安裝的版本比較舊,而且在配置遠端api時要好多錯誤,建議使用方式
#curl -fsSL https://get.docker.com/ | sh或#yum install docker-engine,這裡以17.0.3-ce版本為例,使用
#docker version命令即可驗證是否安裝成功,接下來要想在windows中操作遠端linux中的docker,那前提是必須
開啟docker遠端API,修改docker配置檔案#vi /usr/lib/systemd/system/docker.service ,進入編輯模式後,將ExecStart這一行後面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,改完後如下所示
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,這裡就寫4個0,你可別改成自己的ip哦,儲存後退出,重新載入配置檔案#systemctl daemon-reload ,啟動docker #systemctl start docker ,
輸入#netstat -anp|grep 2375 顯示docker正在監聽2375埠,輸入#curl 127.0.0.1:2375/info 顯示一大堆資訊,證明遠端api就弄好了
事實證明:要開啟遠端連線必須,修改 vi /etc/sysconfig/docker-network,而不是第三步
- # /etc/sysconfig/docker-network
- DOCKER_NETWORK_OPTIONS="-H unix:///var/run/docker.sock -H 0.0.0.0:2375"
然後重啟docker
sudo systemctl daemon-reload
sudo service docker restart
第四:在windows系統環境變數中新建DOCKER_HOST,值為tcp://10.100.74.220:2375,(你改成你自己的docker伺服器ip地址)
第五步:開啟dos視窗,即cmd命令列,進入到你要編譯的專案資料夾下,
輸入mvn clean package docker:build -DskipTests ,然後慢慢等待,直到最後build成功
第六步:登陸linux,輸入#docker images 發現自己的專案已經被編譯成映象了,可以啟動容器執行映象了,也相當於完成了專案的雲部署
常用的命令
ps -aux | grep java
docker images 檢視映象
sudo docker rmi -f 1dd 刪除映象
docker rm -f `docker ps -a -q` 刪除所有容器
docker run -p 8081:8050 -t zhujm/demo 執行映象