前面介紹了docker到底是什么? 還有如何在centos中安裝docker蛋褥。那么現(xiàn)在讓我們自己來(lái)實(shí)戰(zhàn)一下彼宠,如何在docker上部署自己第一個(gè)項(xiàng)目。在之后會(huì)有詳細(xì)介紹docker命令和具體應(yīng)用的筆記
創(chuàng)建一個(gè)Springboot程序
1.初始化項(xiàng)目
我們打開(kāi) spring官方提供的初始化springboot項(xiàng)目頁(yè)面 Spring Initializr诗力。Dependencies選擇web就可以了凰浮,項(xiàng)目如圖:
2.使用IDEA或者ecplipse導(dǎo)入,我這里使用的是IDEA苇本。
將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 文件
自定義請(qǐng)求路徑
server.servlet.context-path=/test
4.創(chuàng)建測(cè)試controller
package com.docker.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName DockerTestController
* @Description docker-demo簡(jiǎn)單的controller
* @Author Neal
* @Date 2019/2/21 18:38
* @Version 1.0
*/
@RestController
public class DockerTestController {
@GetMapping("/docker")
public String dockerTest() {
return "hello docker";
}
}
5.最終項(xiàng)目目錄
6.使用IDEA啟動(dòng)袜茧,測(cè)試項(xiàng)目是否部署成功。
請(qǐng)求本地路徑瓣窄,查看返回結(jié)果
我們看到項(xiàng)目沒(méi)什么問(wèn)題笛厦,那么現(xiàn)在讓我們把springboot程序打包,打成jar包即可俺夕。
7.打包
這里我使用IDEA中的MAVEN插件打包裳凸,非常簡(jiǎn)單快捷,但是就是需要走一遍測(cè)試劝贸。步驟如下:
雙擊package即可登舞,最后只要等待控制臺(tái)輸出SUCCESS即可。
我們會(huì)在項(xiàng)目中的dockertest\demo\target\demo-docker.jar
路徑中看到自己打包的jar悬荣。
使用Docker部署(linux)
我這里使用的是自己的阿里云服務(wù)器菠秒,如果有本地虛擬機(jī)使用的centos系統(tǒng)也可以,這個(gè)大家可以自行選擇。
1.把jar包放到固定目錄下
我的目錄是 /home/docker/docker-demo
2.創(chuàng)建Dockerfile
文件
使用vim Dockerfile
命令創(chuàng)建文件并將以下內(nèi)容copy進(jìn)你自己的Dockerfile文件中践叠。
#獲取base image
FROM adoptopenjdk/openjdk8:latest
#類(lèi)似于執(zhí)行 linux指令
RUN mkdir /opt/app
#類(lèi)似于linux copy指令
COPY demo-docker.jar /opt/app/
#對(duì)外端口
EXPOSE 8080
#執(zhí)行命令 java -jar /opt/app/demo-docker.jar
CMD ["java", "-jar", "/opt/app/demo-docker.jar"]
可能有同學(xué)會(huì)問(wèn) 這命令是干什么的言缤,稍后會(huì)有文章單獨(dú)介紹。我們今天主要是實(shí)現(xiàn)docker部署一個(gè)springboot項(xiàng)目禁灼。
copy復(fù)制完后管挟,按ESC并輸入 :wq
保存文件。
3.在當(dāng)前路徑輸入命令 ls
如果出現(xiàn)以下輸出弄捕,表示正確僻孝。
4.創(chuàng)建docker 鏡像。
sudo docker build -t docker-demo .
這里稍微解釋一下 build
是創(chuàng)建命令 守谓,-t
是指定target 名稱穿铆, docker-demo
就是鏡像名稱 ,.
指的是在當(dāng)前目錄下 尋找 Dockerfile
文件。
執(zhí)行以上指令斋荞,如果打印輸出如下荞雏,表示創(chuàng)建成功。
5.查看當(dāng)前鏡像列表
6.生成container
執(zhí)行以下命令
docker run -it -p 8080:8080 docker-demo
這里也稍微做一下解釋 run
運(yùn)行鏡像 -it
以交互模式運(yùn)行容器并為容器重新分配一個(gè)偽輸入終端 -p
端口映射平酿,格式為:主機(jī)(宿主)端口:容器端口 凤优。 最后的就是我們剛剛創(chuàng)建的鏡像名稱。
如果輸出以下內(nèi)容蜈彼,表示部署基本成功筑辨。
7.檢測(cè)部署是否成功
這里我使用的是我自己阿里云服務(wù)器上的公網(wǎng)IP,大家可以選擇自己的對(duì)外IP進(jìn)行測(cè)試幸逆。我這里使用的是chrome瀏覽器挖垛。
總結(jié)
一個(gè)簡(jiǎn)單的Springboot項(xiàng)目,已經(jīng)使用docker部署完了秉颗。在部署這個(gè)小項(xiàng)目的時(shí)候,自己做過(guò)很多測(cè)試送矩,包括基礎(chǔ)鏡像的創(chuàng)建蚕甥,Dockerfile的調(diào)試等,如果各位對(duì)docker感興趣栋荸,可以使用 play with docker 來(lái)熟悉或者練習(xí)菇怀,具體怎么使用可以自行百度。