linux环境利用docker部署springboot项目

这几天抽空整理了一下早年的笔记,这篇是关于的docker部署,希望新人可以少踩坑。

1、改pom、建Dockerfile

安装插件dockerfile-maven-plugin

<build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.13</version>
            <executions>
                <execution>
                    <id>default</id>
                    <goals>
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!--生成的镜像的repository信息-->
                <repository>com.top.facloud/${project.name}</repository>
                <tag>${project.version}</tag>
                <buildArgs>
                    <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
                <!--路径为项目根目录-->
                <dockerfile>Dockerfile</dockerfile>
            </configuration>
        </plugin>
    </plugins>
</build>

新建Dockerfile

# 添加 Java 8 镜像来源
FROM java:8

# 添加参数
ARG JAR_FILE

# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar

# 执行启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

开始我这么配Dockerfile,src/main/docker/Dockerfile,会报“build failed:Could not acquire image ID”;需要把把Dockerfile放到项目根目录下。

2、安装docker for windows

开始没装docker for windows,就直接运行maven package打包,结果报错 Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed。

官网下载安装后打开,会提示 WSL 2 installation is incomplete,去下面这个网址下载微软的升级包。

https://link.csdn.net/?target=https%3A%2F%2Fwslstorestorage.blob.core.windows.net%2Fwslblob%2Fwsl_update_x64.msi

wsl升级后,再运行maven package打包,发现还是会报之前的错误;如下设置后,再运行maven package打包,成功出包。

3、打可执行jar包

我开始理解的是我的windows本地,生成一个docker的镜像,再上传到linux上。实际我理解错了,windows本地生成的镜像,在docker desktop中可以看到。这个镜像在我windows上的docker上可以运行(这一点没有实操)。

我现在需要做的是打一个可执行jar包,上传到linux上,生成一个镜像。于是我把docker相关的依赖注释掉,执行maven package打包,但是打出来的jar不是可执行jar,不包含依赖文件。

父pom.xml做如下配置,再执行maven compile,再执行maven package,这时候出来的就是可执行jar。

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>2.6.2</version>
      <!--打包成可执行jar-->
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
      <!--<configuration>
        <fork>true</fork>
        <addResources>true</addResources>
      </configuration>-->
    </plugin>
  </plugins>
</build>

4、生成镜像,启动容器

我把jar包上传到/mydata/facloud-gen,并在此目录下新建Dockerfile。

# 添加 Java 8 镜像来源
FROM java:8

# 添加 Spring Boot 包
ADD facloud-src-generator-1.0-SNAPSHOT.jar facloud-src-generator.jar

# 执行启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/facloud-src-generator.jar"]

执行下面的命令生成镜像

docker build -f ./Dockerfile -t facloud-src-generator .

执行下面的命令启动容器

docker run -id -p 8012:8012 --name facloud-src-generator facloud-src-generator

版权声明:本文所有权归作者! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
赞成、反驳、不解的小伙伴,欢迎一起交流!

posted @   码文采  阅读(340)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示