使用Docker部署第一個springboot項目

說明:我的編譯器是IDEA,操作系統是MacOS,所有的代碼文章中都有,建議自己動手收穫更多~

1、去springboot官網下載一個springboot項目(網址:https://start.spring.io/

2、修改pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.docker.example</groupId>
	<artifactId>demo</artifactId>
	<version>docker</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<packaging>jar</packaging>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

3、配置application.properties文件

server.servlet.context-path=/test

4、編寫自己的controller層

package com.docker.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Star
 * @date 2020-05-09 18:28
 */
@RestController
public class DockerTestController {

    @GetMapping("/docker")
    public String dockerTest() {
        return "hello docker hhh";
    }
}

此時的項目結構爲:(完整代碼已上傳至下載中心)

5、啓動項目

6、在瀏覽器上輸入http://localhost:8080/test/docker

7、使用maven進行打包

打包完成

8、查看jar包

9、把jar包放在固定的目錄下,我的目錄:/Users/xxx/Documents/lh/test/docker-demo

在當前目錄下創建Dockerfile文件,文件內容如下

#獲取base image
FROM adoptopenjdk/openjdk8:latest
#類似於執行 linux指令
RUN mkdir /opt/app 
#類似於linux copy指令
COPY demo-docker.jar /opt/app/      
#對外端口
EXPOSE 8080
#執行命令 java -jar /opt/app/demo-docker.jar
CMD ["java", "-jar", "/opt/app/demo-docker.jar"]

現在的目錄效果:

$ ls
Dockerfile	demo-docker.jar

10、創建Docker鏡像

//命令
sudo docker build -t docker-demo .

執行過程需要輸入本機密碼,輸入完之後回車,等候創建鏡像成功

$ sudo docker build -t docker-demo .
Password:
Sending build context to Docker daemon  16.73MB
Step 1/5 : FROM adoptopenjdk/openjdk8:latest
latest: Pulling from adoptopenjdk/openjdk8
23884877105a: Pull complete 
bc38caa0f5b9: Pull complete 
2910811b6c42: Pull complete 
36505266dcc6: Pull complete 
3f0363b162ad: Pull complete 
fe6480de91bf: Pull complete 
Digest: sha256:66ca40f1847332a69624a5ed7444a51b522a6b7f2c6a984e6e33a9fbda1d0a50
Status: Downloaded newer image for adoptopenjdk/openjdk8:latest
 ---> 8d67cae7475e
Step 2/5 : RUN mkdir /opt/app
 ---> Running in c4de657f3bb3
Removing intermediate container c4de657f3bb3
 ---> d5b4d7fbf1d0
Step 3/5 : COPY demo-docker.jar /opt/app/
 ---> ca0bb0740376
Step 4/5 : EXPOSE 8080
 ---> Running in 788543ac21d6
Removing intermediate container 788543ac21d6
 ---> 12c5e03f6ddc
Step 5/5 : CMD ["java", "-jar", "/opt/app/demo-docker.jar"]
 ---> Running in a01e141a6b94
Removing intermediate container a01e141a6b94
 ---> 68d212d909bb
Successfully built 68d212d909bb
Successfully tagged docker-demo:latest

11、查看當前鏡像

$ docker image ls
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker-demo             latest              68d212d909bb        8 minutes ago       317MB
adoptopenjdk/openjdk8   latest              8d67cae7475e        2 days ago          300MB
hello-world             latest              bf756fb1ae65        4 months ago        13.3kB

我們創建的鏡像已經有了,名字就是docker-demo

12、使用鏡像生成容器

$ docker run -it -p 8080:8080 docker-demo

部署成功

13、瀏覽器驗證,出現下圖就證明成功了

14、control+c停止到,使用命令使其在後臺運行

$ docker run -d -it -p 8080:8080 docker-demo
b5290835e86a666ad8f60b102eacb74a3e2115a39e52bf6c7c41616678eb14da

15、查看當前運行的容器

$ docker  ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
b5290835e86a        docker-demo         "java -jar /opt/app/…"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   inspiring_heisenberg

16、進入容器

$ docker exec -it b5290835e86a /bin/bash

此時出現的效果如下圖

這樣就相當於我們進入容器裏了,在最開始我們創建Dockerfile時拷貝過來的jar包

17、使用Docker應用查看日誌

選擇第一個,查看日誌

18、謝謝博主,參考文檔:https://www.jianshu.com/p/d998dc9d9685

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