基於Docker的部署

Docker是使用Dokerfile文件來編譯自己的鏡像的。

Dockerfile

Dockerfile主要有如下的指令。

1.FROM 指令

FROM指令指明瞭當前鏡像繼承的基鏡像。編譯當前鏡像時會自動下載基鏡像,如:

FROM ubuntu 

2. MAINTAINER 指令

MAINTAINER指令指明瞭當前鏡像的作者,如:

MAINTAINER wyf 

3. RUN 指令

RUN指令可以在當前鏡像上執行Linux命令並形成一個新的層。RUN是編譯時(build)的動作。
示例可有如下兩種格式,CMD和ENTRYPOINT也是如此:

RUN /bin/bash -c "echo helloworld" 

RUN ["/bin/bash", "-c", "echo hello"] 

4. CMD指令

CMD指令指明瞭啓動鏡像容器時的默認行爲。一個Dockerfile裏只能有一個CMD指令。CMD指令裏設定的命令可以在運行鏡像時使用參數覆蓋。CMD是運行時(run)的動作,如:
CMD echo “this is a test”
可被docker run-d image_name echo”this is not a test”覆蓋。

5. EXPOSE指令

EXPOSE指明瞭鏡像運行時的容器必需監聽指定的端口,如:

EXPOSE 8080 

6. ENV指令

ENV指令可用來設置環境變量,如:

ENV myName=wyf 

ENV myName wyf 

7. ADD 指令

ADD指令是從當前工作目錄複製文件到鏡像目錄中去,如:

ADD test.txt /mydir/ 

8. ENTRYPOINT 指令

ENTRYPOINT指令可讓容器像一個可執行程序一樣運行,這樣鏡像運行時可以像軟件一樣接收參數執行。ENTRYPOINT是運行時(run)的動作,如:

ENTRYPOINT ["/bin/echo"] 

我們可以向鏡像傳遞參數運行:

docker run -d image_name "this is not a test" \

項目目錄及文件

我們使用源碼的ch10docker來作爲演示用的Spring Boot項目,這個項目很簡單,只修改了入口類,代碼如下:

/**
 * @author yuhao.wang
 */
@Controller
public class SwaggerController {

    @GetMapping("/")
    public String swaggerUi() {

        return "redirect:/swagger-ui.html";
    }
}

在CentOS 7.1上的/home/app目錄下放入我們編譯好的jar包,如spring-boot-student-banner-0.0.1-SNAPSHOT.jar,在同級目錄下新建一個Dokcerfile文件,如:

[root@localhost app]# ls
Dokcerfile  spring-boot-student-banner-0.0.1-SNAPSHOT.jar
[root@localhost app]#

Dockerfile文件內容如下:

FROM java:8 

MAINTAINER wyh

ADD spring-boot-student-banner-0.0.1-SNAPSHOT.jar app.jar 

EXPOSE 80

ENTRYPOINT ["java","-jar","/app.jar"] 

代碼解釋:
1. 基鏡像爲Java,標籤 版本. 爲8。
2. 作者爲wyh。
3. 將我們的spring-boot-student-banner-0.0.1-SNAPSHOT.jar添加到鏡像中,並重命名爲app.jar。
4. 運行鏡像的容器,監聽80端口。
5. 啓動時運行java -jar app.jar。

編譯鏡像

在/home/app目錄下執行下面命令,執行編譯鏡像:

docker build -t wisely/rabbitmqdemo . 

其中,wisely/rabbitmqdemo爲鏡像名稱,我們設置wisely作爲前綴,這也是Docker鏡像的一種命名習慣。
注意,最後還有一個“.”,這是用來指明Dockerfile路徑的,“.”表示Dockerfile在當前路徑下。
編譯的過程如下所示:

[root@localhost app]# docker build -t wisely/rabbitmqdemo .
Sending build context to Docker daemon 18.09 MB
Step 1 : FROM java:8
Trying to pull repository docker.io/library/java ...
8: Pulling from docker.io/library/java

5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:34959eed5df6bfe74a17fbf459ed29505d51a48d5cb4a39f215b613c65b8023b
 ---> d23bdf5b1b1b
Step 2 : MAINTAINER wyh
 ---> Running in 0b3f96b31980
 ---> 4c7c4c54a5e5
Removing intermediate container 0b3f96b31980
Step 3 : ADD spring-boot-student-banner-0.0.1-SNAPSHOT.jar app.jar
 ---> 4193c2e8f6c9
Removing intermediate container 0fe2f499d5af
Step 4 : EXPOSE 80
 ---> Running in 855a2fc6ad27
 ---> 059bbcc036af
Removing intermediate container 855a2fc6ad27
Step 5 : ENTRYPOINT java -jar /app.jar
 ---> Running in ba217b0e2951
 ---> cc2264154e35
Removing intermediate container ba217b0e2951
Successfully built cc2264154e35

這時我們查看本地鏡像,如:

[root@localhost app]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
wisely/rabbitmqdemo   latest              cc2264154e35        2 minutes ago       661.2 MB
docker.io/java        8                   d23bdf5b1b1b        12 months ago       643.1 MB
[root@localhost app]#

這裏我們可以看到rabbitmqdemo和java兩個鏡像。

運行

通過下面命令運行:

docker run -d --name appdemo -p 80:80 wisely/rabbitmqdemo

查看我們當前的容器狀態,如下所示:

[root@localhost app]# docker run -d --name appdemo -p 80:80 wisely/rabbitmqdemo
9da20077be1c672acbcdad0b582c45794305698e1d165c0d6376d3771232692b
[root@localhost app]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                                                                        NAMES
9da20077be1c        wisely/rabbitmqdemo   "java -jar /app.jar"     19 seconds ago      Up 17 seconds       0.0.0.0:80->80/tcp                                                                           appdemo
[root@localhost app]#

當前的CentOS系統的ip爲192.168.35.128,訪問http://192.168.35.128 ,我們可以看到如圖所示頁面。
輸入圖片說明

源碼

https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases

spring-boot-student-banner 工程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章