Docker部署Spring Boot項目 筆記

最近在看Docker,正好公司要做要一個小功能開發,所以決定拿來練一下手,以下是一些筆記。

創建一個Spring Boot 項目,網上很多這個自己查找一下。

  • 棄用tomcat,選用undertow

       最近看到了一個Web容器,在高負載的情況下號稱可以勝過tomcat 和 jetty,那就是undertow。既然是練手,那就拋棄一下tomcat。所以我的項目用的是undertow。

在maven中的配置,不用默認的tomcat

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
       <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
/dependency>

引入undertow

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
  • 打包

       將編寫好的項目通過maven 打包成jar包,最好在本地先測試一下單獨的jar包能獨立運行不。不然放到docker再調試有點麻煩。

        這裏比如我們通過maven 打包得到的文件問 spring-boot-docker-project-1.0-SNAPSHOT.jar

  • 安裝Docker

        我這裏使用的是CentOS7.2,安裝教程這裏不做介紹,網上也比較多。

  • 製作dockerImage
  1. 安裝完Docker後,自己新建一個文件夾用來存放Dockerfile和jar包,
  2. 這裏示例目錄爲 /mnt/docker
  3. 將spring-boot-docker-project-1.0-SNAPSHOT.jar 拷貝至  /mnt/docker 文件夾。
  4. 編寫Dockderfile ,cd 進入 /mnt/docker ,新建一個Dockerfile
  5. 輸入命令touch Dockerfile,然後vi Dockerfile,輸入如下內容
    FROM frolvlad/alpine-oraclejdk8:slim
    VOLUME /tmp
    ADD spring-boot-docker-project-1.0-SNAPSHOT.jar app.jar
    RUN sh -c 'touch /app.jar'
    ENV JAVA_OPTS=""
    ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar 
     /app.jar"]
    

    最後的ENTRYPOINT 在一行,不要換行,這裏因爲編輯器的問題換行了。編輯完成後保存Dockerfile。

  6. build鏡像,cd 進入 /mnt/docker 目錄,然後執行命令

    docker build -t spring-boot-docker:1.0 .

    -t 後面的是可以自定義的,用作鏡像的名稱。注意最後有個 . 這個很重要!!!! 這裏可以配置docker加速,阿里雲提供有服務。構建會快一些。

  7. 等待build完成,用 docke images 命令查看是否能看到鏡像。
  • 運行項目

        輸入命令 

docker run -p 9010:9010 --name chat-message -t 鏡像ID

     -p 表示宿主機的端口號這個端口號是對外訪問的,後面的端口號是容器的端口號,即項目運行的端口號。注意不要弄錯了。

    --name 表示鏡像的名稱

    -t 後面要跟上鏡像的id

至此結束。

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