前言
本章方法大大的減少了你辛辛苦苦去部署springcloud項目到docker的時間,
不過使用的前提是使用idea才行,
如果不是,也可以移植:
springcloud項目移植到docker中(jar導入方式)
本次分爲兩個點:
1、Linux系統該準備什麼
2、idea該準備什麼
Linux操作
1、編輯docker.service文件
vi /usr/lib/systemd/system/docker.service
2、修改docker.service文件內容爲(centos7)
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
2、修改docker.service文件內容爲(centos 7以下版本)
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
3、保存並重啓docker
systemctl daemon-reload
service docker restart
4、檢測是否成功修改:
curl http://localhost:2375/version
效果:
5、到主機上進行訪問
主機ip+2375/version
Idea操作
在進行操作時先測試能否導成jar包,不理解的可以先看:
springcloud項目移植到docker中(jar導入方式)
如果能導成jar包則進入下一步操作
1、下載docker插件(如果是2019版本後的應該就有內置的)
2、使用插件連接到Docker
3、docker 使用介紹
4、創建一個dockerfile文件等待配置
#這是基礎鏡像
FROM openjdk:8-jdk-alpine
#複製jar包到鏡像中,並且將名字改成 app.jar
ADD *.jar app.jar
# 在容器啓動的時候運行命裏,來啓動我們的項目 (這其實就是一段Linux命令)
# 這個啓動命里根據你的實際情況更改
ENTRYPOINT ["java","-jar","/app.jar"]
5、如何生成jar包,並生成到docker包下(我的可能是jar包問題不行)
jar包生成:
docker文件講解:
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--添加自己的啓動類路徑!-->
<mainClass>com.scp2p.microserviceconfigserver1001.MicroserviceConfigServer1001Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依賴的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- <plugin>-->
<!-- <artifactId>maven-antrun-plugin</artifactId>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <phase>package</phase>-->
<!-- <configuration>-->
<!-- <tasks>-->
<!-- <!– 這是將 jar包copy 到 docker目錄下–>-->
<!-- <copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>-->
<!-- </tasks>-->
<!-- </configuration>-->
<!-- <goals>-->
<!-- <goal>run</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
</plugins>
</build>
6、配置項目docker管理
7、兩種配置方式,橋接模式和主機模式
主機模式:
橋接模式
命令解釋:
-
Image tag : 指定鏡像名稱和tag,鏡像名稱爲 docker-eureka2001,tag爲v1.0
-
Bind ports : 綁定宿主機端口到容器內部端口。格式爲[宿主機端口]:[容器內部端口]
-
Bind mounts :
將宿主機目錄掛到到容器內部目錄中。格式爲[宿主機目錄]:[容器內部目錄]。這個springboot項目會將日誌打印在容器
/home/developer/app/logs/ 目錄下,將宿主機目錄掛載到容器內部目錄後,那麼日誌就會持久化容器外部的宿主機目錄中。
8、看情況使用哪種模式,OK了,就開啓就完事了
效果:
可能會出現的問題:
這裏中爲輸出會亂碼,解決方式如下:
找到IDEA安裝目錄的bin目錄,在idea.exe.vmoptions和idea64.exe.vmoptions文件中追加以下內容:
-Dfile.encoding=utf-8
後言
學會了這一招就不用jar包一個去開啓了,當然,如果使用的是其他的開發工具那另說,使用這個也行