您好,登錄后才能下訂單哦!
Docker中怎么部署可執行jar包,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
將項目打包,上傳到服務器的指定目錄
在該目錄下創建Dockerfile文件
vi Dockerfile
Dockerfile寫入如下指令
FROM java:8 MAINTAINER demo ADD demo-0.0.1-SNAPSHOT.jar demo.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","demo.jar"]
其中指令的含義:
FROM:基礎鏡像,FROM java:8
指的是拉取一個jdk1.8的鏡像
MAINTAINER:作者,MAINTAINER demo
作者是demo
ADD: 將打包的可執行jar包復制到鏡像中并重命名(用 COPY 也可),ADD demo-0.0.1-SNAPSHOT.jar demo.jar
將demo-0.0.1-SNAPSHOT.jar 復制到鏡像中并重命名為 demo.jar
EXPOSE: 聲明端口
ENTRYPOINT : 容器啟動之后執行的命令,java -jar demo.jar
即啟動jar
創建好Dockerfile文件之后,執行命令 構建鏡像
docker build -t my-demo .
注意最后的 .
表示Dockerfile在當前文件目錄下。my-demo表示構建的鏡像,構建成功后可以使用docker images
命令查看鏡像。
鏡像構建成功之后,就可以運行容器
docker run -d --restart=always --name demo -p 8080:8080 my-demo
其中參數的含義:
-d :后臺運行容器,并返回容器ID
–restart=always :容器在停止或服務器開機之后會自動重新啟動
-p :指定端口映射
最后的 my-demo指定鏡像
啟動容器后可以使用 docker ps
命令查看啟動的容器
docker logs --tail 300 -f 容器id
,可以查看服務的日志。
如果想更新jar包,只需要使用docker cp demo-0.0.1-SNAPSHOT.jar 容器ID:/demo.jar
,就可以將demo-0.0.1-SNAPSHOT.jar拷貝進容器并重命名,然后 docker restart 容器ID
重啟容器。
方法一是直接構建了一個運行jar包的鏡像,這里還有另外一種方式,基于jdk鏡像運行容器。
在服務器中拉取jdk1.8的鏡像
docker pull jdk8
創建目錄,并將jar包上傳到該目錄
cd /server/ mkdir deploy/jar
運行容器:在運行容器的命令里指定包的運行
docker run -d \ --restart=always \ -v /server/deploy/jar:/jar -v /server/logs/demo:/mnt/logs/demo \ -p 7778:7778 \ --name demo \ jdk8 /usr/bin/java -jar \ -Duser.timezone=GMT+08 \ /jar/demo-1.0.jar
上面命令的說明:
-Duser.timezone
:指定時區
jdk8 /usr/bin/java -jar
:執行jar包
/jar/demo-1.0.jar
:指定需要執行的jar包的位置。
以后發布,只需要把宿主機目錄里的jar包替換掉,重啟容器。
修改Docker配置開啟允許遠程訪問 Docker 的功能,開啟方式很簡單,修改 /usr/lib/systemd/system/docker.service
文件,加入如下內容:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
配置完成后,保存退出,然后重啟 Docker:
systemctl daemon-reload service docker restart
在SpringBoot項目的目錄下新建Dockerfile文件
FROM java:8 VOLUME /tmp ADD target/docker-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"]
配置Maven插件:在pom.xml文件中添加如下插件:
<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.0</version><executions><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><dockerHost>http://192.168.66.131:2375</dockerHost><imageName>javaboy/${ project.artifactId}</imageName><imageTags><imageTag>${ project.version}</imageTag></imageTags><forceTags>true</forceTags><dockerDirectory>${ project.basedir}</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${ project.build.directory}</directory><include>${ project.build.finalName}.jar</include></resource></resources></configuration></plugin>
這個插件的配置說明:
首先在 execution 節點中配置當執行 mvn package 的時候,順便也執行一下 docker:build
然后在 configuration 中分別配置 Docker 的主機地址,鏡像的名稱,鏡像的 tags,其中 dockerDirectory 表示指定 Dockerfile 的位置。
最后 resource 節點中再配置一下 jar 的位置和名稱即可。
執行命令
mvn clean package docker:build
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。