1. 程式人生 > >使用docker-maven-plugin外掛將專案編譯為docker映象到遠端linux伺服器(非常有用)

使用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,而不是第三步

  1. # /etc/sysconfig/docker-network  
  2. 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 執行映象