将本地SpringBoot微服务制作成Docker Image镜像包然后运行

将本地SpringBoot微服务制作成Docker Image镜像包然后运行

文章目录

  • 将本地SpringBoot微服务制作成Docker Image镜像包然后运行
    • 1)环境准备
    • 2)验证jar包
    • 3)制作images镜像包
    • 4)注意

1)环境准备

准备一个SpringBoot项目,在右侧的Maven工具栏中选择mvn clean package,然后Run

将本地SpringBoot微服务制作成Docker Image镜像包然后运行_第1张图片

然后我们项目文件模块下会多出来一个target目录,有一个 项目名-版本号.jar的包,打开查看,文件目录结构大致如下:

将本地SpringBoot微服务制作成Docker Image镜像包然后运行_第2张图片

注意MANIFEST.MF文件中定义了项目的各个配置信息,包括主类、启动类、各个版本依赖关系等等,如果没有Main-ClassStart-Class的话可能是少了打包插件,加上以下pom即可

<plugin>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-maven-pluginartifactId>
  <executions>
    <execution>
      <goals>
        <goal>repackagegoal>
      goals>
    execution>
  executions>
plugin>

2)验证jar包

在制作镜像包之前首先验证jar包是否能够正常运行,否则可能后续制作image镜像包时跑不起来也不知道是什么问题。命令行进去项目文件路径:

将本地SpringBoot微服务制作成Docker Image镜像包然后运行_第3张图片

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

保存退出后,文件如下:

image-20230114135520300

运行打包shell命令:

# 通过Dockerfile文件生成一个镜像包,myboot表示镜像包名,1.1表示版本号,.表示在当前目录
docker build -t myboot:1.1 .
# 运行该镜像包
docker run -d -p 2023:2023 [IMAGE ID]
# 查看docker容器,如果正常启动就可以去前台访问了
dcoker ps

将本地SpringBoot微服务制作成Docker Image镜像包然后运行_第4张图片

4)注意

需要注意的是我们在写SpringBoot项目时,如果有连接第三方中间件的操作,一般都是连接自己电脑本地的服务,比如连接mysql,可能host直接就写127.0.0.1,这样打出来的jar包在本地运行确实没问题,但是在docker中可能就会找不到服务器。

你可能感兴趣的:(云原生,spring,boot,微服务,docker)