Docker部署單節點的Spring Boot項目

Docker環境的安裝

本文的操作均基於CentOS操作系統

  1. 卸載本地可能存在的舊版本docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安裝本地docker倉庫
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  1. 安裝本地倉庫配置
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安裝Docker Engine-Community
sudo yum install docker-ce docker-ce-cli containerd.io
  1. 啓動docker
sudo systemctl start docker
  1. 測試是否安裝成功
    docker安裝好後有一個默認的hello-world項目鏡像,可以嘗試啓動測試環境是否安裝好了
sudo docker run hello-world

Spring Boot項目 Jar包生成

  1. 將pom.xml中的打包方式設置成爲maven
 	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  1. 進行打包,點擊maven-package進行打包
    在這裏插入圖片描述
  2. 打包完成後在target目錄下可以看到項目打成的jar包
    在這裏插入圖片描述

Dockerfile編寫

  1. 編寫Dockerfile之前需要了解一些常用的語法
  • FROM :指使用的Base Image是什麼,如FROM java:8,表示使用安裝了JDK8的鏡像作爲基礎鏡像
  • RUN:執行代碼 每RUN一次就生成一層 。爲了避免無用分層,建議合併多條指令執行,用&&連接
  • WORKDIR:docker容器中的當前工作目錄,相當於在docker容器中執行cd操作
  • EXPOSE:聲明暴露端口
  • ADD:添加本地文件到docker容器中並解壓: ADD file dockerDir
  • COPY:添加本地文件到docker容器中: COPY file dockerDir
  • ENTRYPOINT:設置容器啓動時運行命令
  1. 編寫部署Java Jar包的Dockerfile
# 基礎鏡像使用java
FROM java:8
# 設置當前工作目錄(容器中)
WORKDIR /usr/app/
# 將jar包添加到容器中
COPY basedemo-0.0.1-SNAPSHOT.jar . 
# 聲明需要暴露的端口(與jar包中的一致)
EXPOSE 8080
# 運行jar包
ENTRYPOINT ["java", "-jar", "basedemo-0.0.1-SNAPSHOT.jar"]
  1. 在服務器上創建一個目錄用於存放部署項目的jar包和Dockerfile
    /root/docker/demo/目錄
    在目錄下創建Dockerfile文件,編寫上述的內容
    將Jar包上傳到此目錄
    在這裏插入圖片描述

Spring Boot項目部署

  1. 構建鏡像
docker build -t demo .

-t 後面接創建的鏡像的名字,這裏取的是demo
一定要注意最後的.,表示運行當前目錄的Dockerfile,一定不能少

構建成功後可以通過docker images查看本地的鏡像
在這裏插入圖片描述
2. 啓動容器

docker run -it -d -p 8081:8080 --name demopro  demo bash

啓動一個容器,容器名爲demopro,將容器的8080端口映射到宿主機8081端口

啓動成功後通過docker ps -a 查看容器
在這裏插入圖片描述
3. 修改運行的Jar包後重新部署

代碼修改後重新部署Jar包時不用重新構建鏡像,因爲是通過讀取宿主機的Jar包進行啓動的,只要保持Jar包名稱一致,替換掉Jar包之後

執行docker restart 容器名就可以重啓容器
在這裏插入圖片描述

可能會用到的Docker指令彙總

查看本地鏡像

docker images

查看本地容器

docker ps -a

查看鏡像/容器信息

docker inspect 鏡像名

進入運行中的容器

docker exec -it 容器名 bash

停止一個容器

docker stop 容器名/容器編號前綴

啓動docker服務

systemctl start docker

重啓docker服務

systemctl restart  docker

關閉docker服務

systemctl stop docker

拉取一個鏡像

docker pull 鏡像名

刪除鏡像

docker rmi 鏡像名

刪除容器

docker rm 容器名/容器編號前綴

刪除所有容器

docker rm $(docker container ls -aq)

刪除所有停止的容器

docker rm $(docker container ls -f "status=exited" -q)

容器打包成鏡像

docker commit  容器名稱  新鏡像名稱

修改鏡像名稱

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