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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

文章目录

1环境准备

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

image-20230114135014167

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

image-20230114135014167

注意MANIFEST.MF文件中定义了项目的各个配置信息包括主类、启动类、各个版本依赖关系等等如果没有Main-ClassStart-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镜像包时跑不起来也不知道是什么问题。命令行进去项目文件路径

image-20230114135014167

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

image-20230114135859583

4注意

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: SpringDocker