springcloud項目移植到docker中(Idea一鍵部署)

前言

本章方法大大的減少了你辛辛苦苦去部署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>-->
<!--                                &lt;!&ndash; 這是將 jar包copy 到 docker目錄下&ndash;&gt;-->
<!--                                <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包一個去開啓了,當然,如果使用的是其他的開發工具那另說,使用這個也行

springcloud項目移植到docker中(jar導入方式)

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