作者:忧伤玫瑰coco_873 | 来源:互联网 | 2023-09-11 14:18
前言
本章方法大大的减少了你辛辛苦苦去部署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包一个去开启了,当然,如果使用的是其他的开发工具那另说,使用这个也行
springcloud项目移植到docker中(jar导入方式)