当前位置:   article > 正文

Docker进阶教程 - 2 Docker部署SpringBoot项目_docker jar包在target目录下

docker jar包在target目录下

更好的阅读体验:点这里www.doubibiji.com

2 Docker部署SpringBoot项目

已经学习了 Dockerfile 了,下面介绍一下如何将 SpringBoot 项目通过 Dockerfile 来部署到 Docker 中。

1 修改项目配置

首先需要准备一个 SpringBoot 项目,将 SpringBoot 项目打成 jar 包。

将项目中的 pom.xml 中的打包方式设置为jar包

<groupId>com.doubibiji</groupId>
<artifactId>hello-springboot</artifactId>
<version>1.0</version>
<!-- 修改打包方式为 jar 包 -->
<packaging>jar</packaging>
  • 1
  • 2
  • 3
  • 4
  • 5

另外如果项目中用到数据库或redis缓存等组件,注意修改地址,不要为 localhost,因为部署到 docker 中,是不在一个容器中的,所以要写明数据库或缓存的地址。

2 打包

执行 maven 工具中的 clean 命令清除编译的 target 目录。

然后再执行 maven 中的 package指令,进行打包。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

打完包,会在编译的target目录下生成 jar 包。

3 拷贝文件

我们可以在项目根目录下创建一个 docker 文件夹,然后在这个文件夹中编写一个 Dockerfile 文件,并将 jar 包拷贝并放在这个目录下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其实这里主要是比较清晰的管理 docker 文件,这里的两个文件后面是需要拷贝到 Docker 宿主机上的。

这一步不影响后面的构建,只是为了将 Dockerfile 比较清晰的保存在项目下。

4 编写 Dockerfile 文件

编写 Dockerfile 文件,这里已 openjdk:11 镜像为基础镜像进行构建,因为 SpringBoot 项目是内置 Tomcat 的,所以只需要 JDK 环境即可。

Dockerfile 内容如下:

# 使用基础的 Java 11镜像
FROM openjdk:11

# 对外暴露的端口是8091
EXPOSE 8080

# 设置环境变量来指定时区
ENV TZ=Asia/Shanghai
# 将时区文件复制到容器中的特定路径
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone

# 将jar包添加到容器中并更名为app.jar
ADD hello-springboot-0.0.1-SNAPSHOT.jar app.jar

# 这个命令的目的是确保 app.jar 文件存在
RUN bash -c 'touch /app.jar'
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

5 将文件传输到服务器

Dockerfilehello-springboot-0.0.1-SNAPSHOT.jar 传输到服务器。

目录自己定义,我这里例如放在 /home/doubi/hello-springboot 目录下。

6 构建镜像

在命令行中,进入到 Dockerfilehello-springboot-0.0.1-SNAPSHOT.jar 所在目录,然后执行如下指令:

docker build -t hello-springboot .
  • 1
  • -t :参数 hello-springboot 是表示建后的镜像名称,

  • . :表示 Dockerfile 所在的当前目录


构建完成,使用 docker images 可以查看到构建完成的镜像:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7 运行镜像

首先新建一个 logs 目录,用于挂载日志目录,这样在主机上查看日志比较方便。

然后使用如下指令运行镜像

docker run -d -p 8080:8080 --restart=always -v /home/doubi/hello-springboot/logs:/logs hello-springboot
  • 1
  • -d :表示后台运行
  • -p :表示端口映射(宿主机端口:容器端口)
  • --restart=always :容器停止后自动重启
  • -v:挂载目录映射(宿主机目录:容器目录),将日志文件夹映射到主机上,方便查看日志。

通过 docker ps 命令查看运行中的容器:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8 访问项目

使用浏览器,通过 IP端口 即可访问项目。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/283718
推荐阅读
相关标签
  

闽ICP备14008679号