Spring Boot實戰(zhàn)(十):使用Docker部署Spring Boot項目

本文使用Docker部署Spring Boot項目。部署之前需要環(huán)境中已經(jīng)安裝Docker和Maven(用于打包),所以本文先進行安裝Docker和Maven;接著搭建一個Spring Boot項目,使其支持Docker部署;最后進行部署和測試。

環(huán)境搭建

安裝Docker

檢查系統(tǒng)內(nèi)核版本

Docker運行在CentOS 7上,要求操作系統(tǒng)為64位,內(nèi)核版本為3.10及以上。
確認(rèn)本機已經(jīng)安裝了滿足要求的Linux內(nèi)核。使用命令uname -r來檢查內(nèi)核版本信息。

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64

在CentOS 7中安裝Docker

使用命令yum install -y docker安裝Docker,“-y”表示不詢問,使用默認(rèn)配置進行安裝。

啟動Docker服務(wù),并設(shè)置為開機自啟動

使用下列命令:

systemctl start docker.service
systemctl enable docker.service

查看版本信息

輸入docker version,返回版本信息表明Docker安裝成功。

[root@localhost ~]# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Wed May  1 14:55:20 2019
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Wed May  1 14:55:20 2019
 OS/Arch:         linux/amd64
 Experimental:    false

安裝Maven和配置阿里云鏡像

下載Maven

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

解壓和移動

tar vxf apache-maven-3.5.4-bin.tar.gz 
mv apache-maven-3.5.4 /usr/local/maven3

配置環(huán)境變量

打開環(huán)境變量vim /etc/profile,添加如下內(nèi)容:

MAVEN_HOME=/usr/local/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

保存并退出::wq

刷新環(huán)境變量的配置使其生效:source /etc/profile

查看版本信息

使用命令mvn -v進行查看

[root@localhost ~]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven3
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_211/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

使用mvn package命令進行打包,卻報錯,提示連接被拒絕。

image

解決辦法:給Maven配置阿里云鏡像
切換到maven安裝目錄下面,打開settings.xml文件,在<mirrors>標(biāo)簽里面添加:

<mirror> 
    <id>alimaven</id> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
    <mirrorOf>central</mirrorOf> 
</mirror> 

Spring Boot項目添加Docker支持

新建Spring Boot工程

新建一個Spring Boot項目,添加一個簡單的DockerController,方便進行測試。

@RestController
@SpringBootApplication
@RequestMapping("/docker")
public class DockerController {

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello Docker";
    }
}

添加Docker支持

在 pom.xml中添加Docker鏡像名稱

<properties>
    <docker.image.prefix>springboot</docker.image.prefix>
</properties>

添加 Docker插件:

       <!-- docker插件 -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>

編寫Dockerfile文件

在目錄src/main/docker下創(chuàng)建Dockerfile 文件,Dockerfile 文件用來說明如何來構(gòu)建鏡像。

FROM java:8
VOLUME /tmp
ADD docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

FROM指令指定一個已經(jīng)存在的鏡像,告訴Docker后續(xù)的指令都是在這個基礎(chǔ)上進行的。例如:FROM java:8表示使用 Jdk1.8 環(huán)境為基礎(chǔ)鏡像進行構(gòu)建鏡像。

VOLUME ,VOLUME 指向了一個/tmp的目錄,由于Spring Boot使用內(nèi)置的Tomcat容器,Tomcat 默認(rèn)使用/tmp作為工作目錄。這個命令的效果是:在宿主機的/var/lib/docker目錄下創(chuàng)建一個臨時文件并把它鏈接到容器中的/tmp目錄

ADD ,拷貝文件并且重命名

ENTRYPOINT,為了縮短Tomcat 的啟動時間,添加java.security.egd的系統(tǒng)屬性指向/dev/urandom作為ENTRYPOINT。

部署Spring Boot工程

將工程代碼 docker 拷貝服務(wù)器中,進入項目路徑下進行打包測試。

打包:mvn package
運行:java -jar target/spring-boot-docker-1.0.jar

項目啟動成功,說明環(huán)境配置沒有問題,接下來可以使用Dockerfile構(gòu)建鏡像。


image

構(gòu)建Docker鏡像mvn package docker:build??梢钥吹絛ocker鏡像構(gòu)建成功,仔細(xì)看日志,會發(fā)現(xiàn)四個步驟和Dockerfile中的指令是一一對應(yīng)的。

image

使用docker images命令查看構(gòu)建好的鏡像:

[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
springboot/docker       latest              39aabeebb971        5 days ago          660 MB

運行docker鏡像:docker run -p 8080:8080 -t springboot/docker

在本機瀏覽器進行訪問,可以看到返回結(jié)果,說明部署成功。


image

完整代碼:GitHub地址

參考:Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容