Docker學習之路(六) 實戰部署Springboot項目

Docker學習之路(六) 實戰部署Springboot項目

部署前 咱們先刪除 服務器上的全部 鏡像以及 容器

docker rmi -f $(docker images -aq)

docker rm -f $(docker images -aq)

docker 安裝 Mysql 容器

docker run -it -d -v /docker/volumes/mysql/conf:/etc/mysql/conf.d -v /docker/volumes/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql -p 3306:3306 mysql:5.7.30

image-20200524181017202

導入sql 文件到我們的容器 mysql 中
在這裏插入圖片描述

使用 idea 將其打包成docker鏡像

(1)準備

我們也可以使用idea 連接到我們 服務器上的docker

首先 需要下載一個插件 名爲 docker 2020版IDEA 已經默認給我們下載好了

image-20200524183947009

image-20200524184018228

這裏設置要連接的docker 服務地址以及端口

docker 默認是未開啓外部訪問的

idea 需要連接的話 咱們需要額外配置,使其開啓遠程訪問

vim /usr/lib/systemd/system/docker.service

注意查看文件 稍微修改一點

image-20200524184314558

保險起見 複製之前的文件並註釋

使用我們下邊這行代碼配置 其暴露端口 隨意 (注意安全組以及防火牆開放對應)

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6500 -H unix:///var/run/docker.sock

重啓

systemctl daemon-reload
systemctl restart docker

然後使用IDEA 再次連接,就可以了

image-20200524184522652

至於 在idea 中 打包項目到docker 有多種方式

我這裏採用的mvn 打包 ,並設置 Img 前綴爲阿里雲一個倉庫的名字

(2) pom.xml 添加 plagin

我這裏附上我的整個build

<build>
		<finalName>springboot-shiro</finalName>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>false</filtering>
				<includes>
					<include>**/*</include>
				</includes>
			</resource>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<includeSystemScope>true</includeSystemScope>
					<mainClass>${startup.main}</mainClass>
				</configuration>
			</plugin>
			<!-- docker的maven插件,官網:https://github.com/spotify/docker-maven-plugin -->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.13</version>
				<configuration>
					<!-- 注意imageName一定要是符合正則[a-z0-9-_.]的,否則構建不會成功 -->
					<!-- 詳見:https://github.com/spotify/docker-maven-plugin    Invalid repository name ... only [a-z0-9-_.] are allowed-->
					<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
					<!-- 指定Dockerfile所在的路徑 -->
					<dockerDirectory>${project.basedir}/docker</dockerDirectory>
					<dockerHost>http://47.97.118.22:6500</dockerHost>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>8</source>
					<target>8</target>
				</configuration>
			</plugin>
			<!--添加配置跳過測試-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.22.1</version>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>
		</plugins>
	</build>

在上方的 properties 添加 阿里雲倉庫前綴 以及項目啓動類所在位置

		<docker.image.prefix>registry.cn-chengdu.aliyuncs.com/leileideve/spring-boot-project</docker.image.prefix>
		<startup.main>com.example.leilei.SpringbootShiroApplication</startup.main>

image-20200524210953639

(3)編寫咱們的 Dockerfile文件

我這裏指定的Dockerfile路徑 是 項目根目錄/docker/

對應着我們打包插件的

<dockerDirectory>${project.basedir}/docker</dockerDirectory>
#所需基礎鏡像
FROM openjdk:8-jdk-alpine
#作者信息
MAINTAINER leilei<[email protected]>
#具名掛載
VOLUME /docker/springboot
#端口暴露80
EXPOSE 80
#將我們的jar 添加到容器中 並取名爲application.jar
ADD springboot-shiro.jar application.jar
# 執行命令
ENTRYPOINT ["java","-Xmx350m","-jar" ,"application.jar"]

image-20200524211605858

(4) 執行打包命令
mvn clean package docker:build

目前僅運行了我們開始創建的 mysql 容器

image-20200524211935431

我們開始打包

打包中–Log 日誌

image-20200524212047331

打包完成

image-20200524211750948

查看服務器 —船新版本的我們自己項目容器 就搭建好了!!!

image-20200524212254576

運行

docker run -d -p 6501:80 --name springboot-shiro 9ed51ea36a98

image-20200524212359994

瀏覽器查看 -----------來咯來咯,他真的來咯

image-20200524212448532

我們登陸進去 測試一下是否能連到咱搭建的mysql 容器-------------也是可以的

把我們的項目鏡像 推送到 阿里雲倉庫

具體的 推送流程 請查看學習五 或者 查看查看阿里雲 (創建倉庫後教程非常詳細)

sudo docker login --username=xxxxxxxx registry.cn-chengdu.aliyuncs.com

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5fKhG0r7-1590327481740)(C:\Users\leilei\AppData\Roaming\Typora\typora-user-images\image-20200524213057803.png)]

image-20200524213458099

那麼 目前的 通過Dockerfile文件創建容器 以及在IDEA 中一鍵打包項目到docker 就完成了!

後續更新 idea 中 項目打包鏡像 以及推送到 自己私有倉庫 !

Bye Bye~~~~

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