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导入方式)

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