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
導入sql 文件到我們的容器 mysql 中
使用 idea 將其打包成docker鏡像
(1)準備
我們也可以使用idea 連接到我們 服務器上的docker
首先 需要下載一個插件 名爲 docker 2020版IDEA 已經默認給我們下載好了
這裏設置要連接的docker 服務地址以及端口
docker 默認是未開啓外部訪問的
idea 需要連接的話 咱們需要額外配置,使其開啓遠程訪問
vim /usr/lib/systemd/system/docker.service
注意查看文件 稍微修改一點
保險起見 複製之前的文件並註釋
使用我們下邊這行代碼配置 其暴露端口 隨意 (注意安全組以及防火牆開放對應)
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6500 -H unix:///var/run/docker.sock
重啓
systemctl daemon-reload
systemctl restart docker
然後使用IDEA 再次連接,就可以了
至於 在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>
(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"]
(4) 執行打包命令
mvn clean package docker:build
目前僅運行了我們開始創建的 mysql 容器
我們開始打包
打包中–Log 日誌
打包完成
查看服務器 —船新版本的我們自己項目容器 就搭建好了!!!
運行
docker run -d -p 6501:80 --name springboot-shiro 9ed51ea36a98
瀏覽器查看 -----------來咯來咯,他真的來咯
我們登陸進去 測試一下是否能連到咱搭建的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)]
那麼 目前的 通過Dockerfile文件創建容器 以及在IDEA 中一鍵打包項目到docker 就完成了!
後續更新 idea 中 項目打包鏡像 以及推送到 自己私有倉庫 !
Bye Bye~~~~