Mac下 Docker部署SpringBoot應用


一、安裝Docker環境

使用 Homebrew 安裝

macOS 我們可以使用 Homebrew 來安裝 Docker。

Homebrew 的 Cask 已經支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 來進行安裝:

$ brew cask install docker

==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:          # 輸入 macOS 密碼
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺  docker was successfully installed!

在載入 Docker app 后,點擊 Next,可能會詢問你的 macOS 登陸密碼,你輸入即可。之后會彈出一個 Docker 運行的提示窗口,狀態欄上也有有個小鯨魚的圖標()。

從應用中找到 Docker 圖標並點擊運行。可能會詢問 macOS 的登陸密碼,輸入即可。

點擊頂部狀態欄中的鯨魚圖標會彈出操作菜單。

第一次點擊圖標,可能會看到這個安裝成功的界面,點擊 "Got it!" 可以關閉這個窗口。

啟動終端后,通過命令可以檢查安裝后的 Docker 版本。

$ docker --version
Docker version 17.09.1-ce, build 19e2cf6

二、SpringBoot應用打包成Docker鏡像並運行

部署過程分為以下幾個步驟:

  1. 創建一個簡單的spring-boot應用
  2. 打包運行應用
  3. 容器化應用
  4. 在pom文件中添加docker支持
  5. 創建docker鏡像
  6. 運行docker容器
  7. 查看正在運行的容器
  8. 啟動/關閉/重啟/刪除docker容器

1. 2.創建SpringBoot應用這里就不贅述了

3. 容器化應用

在項目目錄創建Dockerfile文件: src/main/docker/Dockerfile(沒有后綴),內容如下:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD demo-0.0.1-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" ]

JAVA_OPTS中可以加一些參數,如果配置了多環境,可以加"-Dspring.profiles.active=prod"

其中 demo-0.0.1-SNAPSHOT.jar 是項目打包后 /target/ 里面的文件名

4. 在pom文件中添加docker支持

<properties>
   <docker.image.prefix>ramer</docker.image.prefix>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.11</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>
    </plugins>
</build>

5. 創建docker鏡像

cmd進入到當前目錄:

cd ~/work/springboot-demo

打包,創建鏡像:

mvn package -Dmaven.test.skip=true docker:build

注意: 請確保maven已添加到path中;並且已安裝docker,如果沒有安裝,請訪問: https://www.docker.com/community-edition#/download 下載合適的版本.

6. 運行docker容器

sudo docker run --name test -p 8080:8080 -d study/test

容器的名字是test,容器的鏡像是study/test

在瀏覽器訪問: http://localhost:8080/hello

7. 查看正在運行的容器

cmd: docker ps

8. 啟動/關閉/重啟/刪除docker容器

cmd: docker start/stop/restart/rm CONTAINER_ID/NAME 
其中: 
CONTAINER_ID: 是容器id,執行 docker ps 可查看 
NAME: 是容器的名稱,也就是docker run –name后面的名字

三、將docker鏡像發送到服務器

1.將指定鏡像保存成 tar 歸檔文件

docker save -o ~/Downloads/test.tar study/test

2.利用scp命令將tar文件發送到服務器

#這一步很重要,如果不加權限,會出現permission denial
sudo chmod 777 ~/Downloads/test.tar
scp ~/Downloads/test.tar test@40.73.130.115:/home/test/data/study/temp

3.在服務器上還原docker鏡像

sudo docker load -i test.tar

4.運行docker容器

sudo docker run --name test -p 8080:8080 -d study/test

 

參考資料:

使用Docker部署 spring-boot maven應用

Docker命令大全


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM