1. 程式人生 > >mac和linux下使用Docker,部署SpringBoot專案到docker

mac和linux下使用Docker,部署SpringBoot專案到docker

主要是看一下如何在linux及mac上安裝docker,建立docker映象,部署SpringBoot專案到docker,並藉助於DaoCloud進行docker映象下載加速等。

我用的電腦是mac,本身並不支援docker,需要安裝Docker ToolBox才能使用Docker。由於大部分情況下線上伺服器都是linux,所以這裡先以linux下Docker的使用為例,後面再講在mac上部署Docker。我購買了一個阿里雲的雲伺服器CentOS7.2,以此為例,如果在購買時就在阿里雲映象市場選擇了帶Docker的系統版本,就可以不用看安裝Docker的步驟了。

Linux使用Docker

1 下載安裝Docker

首先通過SSH連線雲伺服器,使用yum install docker即可,安裝完成後啟動service docker start,可以將docker加入開機啟動chkconfig docker on。然後就可以使用docker了,首先試試docker version吧。(推薦)如果下載docker很慢,我們可以使用DaoCloud提供的映象站點加速。http://get.daocloud.io/安裝docker:
curl -sSL https://get.daocloud.io/docker | sh
如果是正常聯網的雲伺服器或PC,執行完上面命令後就會開始下載安裝了,過一段時間後成功會顯示如下介面
使用下面的方式,它會自動配置一些資訊,比手工下載docker並配置來的更方便。

2 配置docker加速器

由於很多映象在國內下載起來很慢,DaoCloud提供了映象加速器來進行加速

配置 Docker 加速器

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://cc4f263c.m.daocloud.ioCopy

該指令碼可以將 --registry-mirror 加入到你的 Docker 配置檔案 /etc/default/docker 中。適用於 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有細微不同。

我們將上面的命令貼上到雲伺服器命令列,執行後重啟docker即可。

3 下載個映象試試

docker官方有很多映象,譬如Ubuntu、mysql、Tomcat之類的,國內也有很多映象市場提供了各種各樣的映象。譬如DaoCloud映象市場,網易蜂巢等,國內的映象市場下載速度相對快一些。我們下載個映象來試試。
docker pull tomcat
通過docker images可以看到已經下載完了Tomcat映象,下面啟動它。
docker run -d -p 8080:8080 tomcat
基礎命令網上多的是,就不解釋了。然後用ip:8080訪問Tomcat看看效果,如果訪問不到請先看看伺服器的安全組策略,是否開放了相應埠。因為預設只開啟了22埠,別的埠可能需要手工開啟。

4 Springboot部署到docker及執行

DaoCloud也有個例子可供參考:http://guide.daocloud.io/dcs/docker-java-spring-boot-9153934.html由於我們要演示SpringBoot部署到docker,所以我們需要一個包含了maven和java的映象,當然也可以選擇直接安裝一個Ubuntu之類的系統再安裝java。這樣的映象有很多,官方的有maven:3-jdk-8     maven:3.3.3 這些都是帶著maven和Java的,已經可以用來跑Springboot專案了。不過我後來找到了一個速度更快的,而且maven依賴的是阿里雲maven的,眾所周知,官方maven速度極慢,一般用阿里雲的maven。
docker pull hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8 

這個是maven+java8的映象,而且來自網易蜂巢,速度快。改自maven官方映象,裡面的maven更改為了阿里雲的,下載maven更快。平時大家需要什麼映象時,最好先到國內的這些映象市場看看,常用的基本都有人配好了,下載快很多。下載完上面的映象後,我們就來構建一個Springboot專案,新增Dockerfile檔案到根目錄。我直接在本地建立專案,新增一個簡單的Controller。
@RestController
public class DockerDemoSpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerDemoSpringBootApplication.class, args);
    }

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

Dockerfile:
FROM hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8

ADD pom.xml /tmp/build/

ADD src /tmp/build/src
        #構建應用
RUN cd /tmp/build && mvn clean package \
        #拷貝編譯結果到指定目錄
        && mv target/*.jar /app.jar \
        #清理編譯痕跡
        && cd / && rm -rf /tmp/build

VOLUME /tmp
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

然後通過ftp工具上傳到雲伺服器,我使用的filezilla,主機填寫伺服器ip,使用者名稱root,密碼是伺服器密碼,連線後即可傳檔案給雲伺服器了
我們把本地建立好的專案上傳上去。然後在伺服器命令列,進入專案根目錄,並執行docker build命令,docker就會根據Dockerfile裡你定義好的命令進行構建新的映象。
-t代表要構建的映象的tag,.代表當前目錄,也就是Dockerfile所在的目錄。然後就可以看到在下載各種依賴的maven、各種jar,構建完畢後,啟動專案。
我們可以看到構建完畢的映象testdocker,啟動它,使用8088埠對映程式裡預設的8080。在外部瀏覽器訪問:
這樣我們就成功部署了一個Springboot專案了。如果要說,怎麼連線資料庫,redis之類的,我建議使用雲端服務,雲redis、雲資料庫,不建議在docker內安裝這些,因為用了docker,多數情況下會啟動多個例項,如果每個例項都有自己的資料庫、redis,那麼資料就無法同步了。至於如何在mac上和Windows尚搭建本地的docker環境,可以去DaoCloud下載相應的包,http://get.daocloud.io/,安裝完後,就有了docker環境了,後續的操作就和上面一樣了。後面我們學習使用Rancher來管理部署docker,就不用手工在命令列去敲命令管理docker了。