最簡捷的docker 部署 springboot專案外部yml
第1步:安裝Docker,略;
第2步:下載openjdk:
dockers pull openjdk
第3步:檢視下載後的openjdk,應如圖所示:
第4步:建立工作目錄
在工作目錄下,建立工作區:
我的工作區設定在/home/work,
在work目錄下,建立三個目錄,分別是:
conf,jar,logs,目錄結構如圖:
其中conf目錄放置專案的yml和其他配置xml檔案,jar目錄放置打包jar檔案,logs目錄放置將來的logs檔案。
第5步:在work目錄下建立Dockerfile檔案,內容如下:
FROM docker.io/openjdk
EXPOSE 8080
ENTRYPOINT ["java","-jar","/lib/app.jar","--logging.config=/conf/logback-spring.xml","--spring.config.location=/conf/application.yml"]
(其中的xml檔案和yml檔案很常規,大家肯定知道是什麼),注意,最後一行,/lib/app.jar,表明,將來容器將執行/lib/app.jar檔案。而這個檔案將會對映到宿主機上。/conf/下的其他兩個檔案也是同理。
第6步:進行工程打包,其中的pom.xml檔案,需要加入以下外掛:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <filtering>true</filtering> <directory>src/main/resources</directory> <excludes> <exclude>**/*.yml</exclude> </excludes> </resource> </resources> </build>
第7步:上傳檔案。
將打包好的jar檔案,命名為app.jar,上傳至/home/work/lib目錄下。並將準備的好的application.yml和日誌配置檔案logback-spring.xml上傳到conf目錄下。
第8步:使用docker,根據Dockerfile,建立一個工程映象。
docker build -t work/mywork:20201231 --rm=true .
注意:
1、work/mywork:20201231,這個名字可以按照 專案/模組(微服務):日期,這樣看起來比較清晰,不容易混亂。
2、--rm=true是為了刪除製作映象過程中的臨時檔案
3、最後一個“.”是不可以省略的。
此刻,執行“docker images”,可以看到自己剛剛製作好的映象。
第9步:使用映象,建立容器:
docker run -dit --name mywork -p 8080:8080-v /home/work/conf:/conf -v /home/work/conf/lib:/lib -v /home/work/conf/logs:/logs work/mywork:20201231
-v是將宿主機上的目錄對映到容器上,因此容器在執行java -jar /lib/app.jar 時,其實載入的就是宿主機上的jar,訪問的也是宿主機conf目錄下的application.yml檔案。
第10步:用docker ps檢視容器的執行狀況。
(如果容器啟動失敗,可用docker ps -a檢視容器狀態。)
如果上面的操作都沒問題,此刻肯定是可以成功運行了。
以後無論是更新jar,還是修改yml文件,都直接在宿主機上修改,然後,重新啟動容器即可。
docker restart 容器名或容器id
最後,可用以下命令檢視容器的日誌,也可以直接到logs目錄下,開啟log檔案,檢視執行結果:
docker logs -f -t --since=60m 1dc396e4a15b #這是檢視最近60分鐘之內的日誌,時間可以更改
上述過程,親手在兩臺伺服器上部署成功,也可以使用docker-compose部署,整個過程非常簡單有效。
2020年12月31日最後一天,算是獻禮吧