Docker下執行springboot
本章我們做個Docker映象,今後用此映象的容器執行springboot的jar包,再通過埠對映對外提供http服務;
實戰環境
本次實戰的環境是Ubuntu16,安裝的Docker版本是17.03.2-ce
製作材料
製作映象所需的材料很簡單:jdk1.8安裝包,此檔案我已分割後上傳到github上(由於github上傳單個檔案不能大於50M,所以只能分割後上傳),地址是:https://github.com/zq2599/springbootrun,如下圖,紅框中的檔案就是分割好的jdk1.8安裝包:
Dockerfile
Dockerfile內容如下,每行都有註釋,就不再贅述了:
# Docker image for springboot file run
# VERSION 0.0.1
# Author: bolingcavalry
#基礎映象使用centos7
FROM centos:centos7
#作者
MAINTAINER BolingCavalry <[email protected]>
#定義工作目錄
ENV WORK_PATH /usr/local/work
#定義jdk1.8的資料夾
ENV JDK_PACKAGE_FILE jdk1.8.0_144
#定義jdk1.8的檔名
ENV JDK_RPM_FILE jdk-8u144-linux-x64.rpm
#yum更新
RUN yum -y update
#把分割過的jdk1.8安裝檔案複製到工作目錄
COPY ./jdkrpm-* $WORK_PATH/
#用本地分割過的檔案恢復原有的jdk1.8的安裝檔案
RUN cat $WORK_PATH/jdkrpm-* > $WORK_PATH/$JDK_RPM_FILE
#本地安裝jdk1.8
RUN yum -y localinstall $WORK_PATH/$JDK_RPM_FILE
#暴露8080埠
EXPOSE 8080
將Dockerfile和JDK安裝包的分割檔案放在同一目錄下,在此目錄下執行如下命令:
docker build -t bolingcavalry/springbootrun:0.0 .1 .
稍後即構建成功,如下圖所示:
驗證映象
驗證此映象的方法是用該映象啟動一個容器,再執行一個spring boot工程試試;
- 執行以下命令啟動一個容器:
docker run --name=test001 -p 8080:8080 -idt -v /usr/local/work/share:/usr/Downloads bolingcavalry/springbootrun:0.0.1
該容器啟動後,8080埠被對映到前電腦的8080埠,目錄/usr/Downloads被對映到當前電腦的/usr/local/work/share目錄;
2. 執行docker ps命令看一下本機活躍容器,如下圖,容器啟動成功:
3. 您可以自己建一個spring boot的web工程,做個最簡單的controller,再打包成jar檔案,或者直接用我的git倉庫中的springbootdemo-0.0.1-SNAPSHOT.jar檔案(地址:https://github.com/zq2599/springbootrun),放入本機的/usr/local/work/share目錄;
4. 執行docker exec -it test001 /bin/bash命令進入容器,再進入容器的/usr/Downloads目錄,這個目錄和當前電腦的/usr/local/work/share是對映關係,所以步驟3中複製的springbootdemo-0.0.1-SNAPSHOT.jar檔案就在這個目錄下了;
5. 執行命令java -jar springbootdemo-0.0.1-SNAPSHOT.jar,啟動spring boot成功,如下圖:
6. 我的電腦IP是192.168.119.155,所以用瀏覽器訪問http://192.168.119.155:8080,看到如下資訊表示服務正常:
以上就是springboot執行環境映象的製作過程,您可以自己試著做出這個映象檔案,也可以直接使用bolingcavalry/springbootrun:0.0.1這個映象,因為我已push到hub.docker.com上去了;