将本地SpringBoot微服务制作成Docker Image镜像包然后运行
文章目录
- 将本地SpringBoot微服务制作成Docker Image镜像包然后运行
- 1)环境准备
- 2)验证jar包
- 3)制作images镜像包
- 4)注意
1)环境准备
准备一个SpringBoot项目,在右侧的Maven工具栏中选择mvn clean package
,然后Run
然后我们项目文件模块下会多出来一个target目录,有一个 项目名-版本号.jar的包,打开查看,文件目录结构大致如下:
注意MANIFEST.MF
文件中定义了项目的各个配置信息,包括主类、启动类、各个版本依赖关系等等,如果没有Main-Class
与Start-Class
的话可能是少了打包插件,加上以下pom即可
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
2)验证jar包
在制作镜像包之前首先验证jar包是否能够正常运行,否则可能后续制作image镜像包时跑不起来也不知道是什么问题。命令行进去项目文件路径:
3)制作images镜像包
上述jar包确保执行无误之后,就可以开始制作image了,首先把jar包上传至服务器的某个文件夹中,然后vim Dockerfile
新建Dockerfile文件,文件中填写以下内容:
# 基础镜像使用Java,如果使用的是jdk8则写 java:8
FROM openjdk:17
# 作者
MAINTAINER shadowy
# VOLUME指定临时文件目录为/tmp,在主机目录下创建了一个临时文件并连接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器并更名为shadowy_docker_v1.0.jar
ADD MySpringBoot-0.0.1-SNAPSHOT.jar /shadowy_docker_v1_0.jar
# 运行jar包
RUN bash -c 'touch /shadowy_docker_v1_0.jar' ENTRYPOINT ["java", "-jar", "/shadowy_docker_v1_0.jar"]
# 暴露6001端口出来作为微服务的端口
EXPOSE 2023
保存退出后,文件如下:
运行打包shell命令:
# 通过Dockerfile文件生成一个镜像包,myboot表示镜像包名,1.1表示版本号,.表示在当前目录
docker build -t myboot:1.1 .
# 运行该镜像包
docker run -d -p 2023:2023 [IMAGE ID]
# 查看docker容器,如果正常启动就可以去前台访问了
dcoker ps
4)注意
需要注意的是我们在写SpringBoot项目时,如果有连接第三方中间件的操作,一般都是连接自己电脑本地的服务,比如连接mysql,可能host直接就写127.0.0.1
,这样打出来的jar包在本地运行确实没问题,但是在docker中可能就会找不到服务器。