最近在看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
- 安裝完Docker後,自己新建一個文件夾用來存放Dockerfile和jar包,
- 這裏示例目錄爲 /mnt/docker
- 將spring-boot-docker-project-1.0-SNAPSHOT.jar 拷貝至 /mnt/docker 文件夾。
- 編寫Dockderfile ,cd 進入 /mnt/docker ,新建一個Dockerfile
- 輸入命令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。
-
build鏡像,cd 進入 /mnt/docker 目錄,然後執行命令
docker build -t spring-boot-docker:1.0 .
-t 後面的是可以自定義的,用作鏡像的名稱。注意最後有個 . 這個很重要!!!! 這裏可以配置docker加速,阿里雲提供有服務。構建會快一些。
- 等待build完成,用 docke images 命令查看是否能看到鏡像。
- 運行項目
輸入命令
docker run -p 9010:9010 --name chat-message -t 鏡像ID
-p 表示宿主機的端口號這個端口號是對外訪問的,後面的端口號是容器的端口號,即項目運行的端口號。注意不要弄錯了。
--name 表示鏡像的名稱
-t 後面要跟上鏡像的id
至此結束。