docker部署java后端项目

2023-12-27 05:06:47

部署java项目,每个人的java项目不一样,我们要自定义一个镜像,自定义镜像本质就是依次准备好程序运行的基础环境、依赖、应用本身、运行配置等文件,并且打包而成。

自定义一个镜像大概流程:

  • 准备一个linux服务(CentOS或者Ubuntu均可)

  • 安装并配置JDK

  • 上传Jar包

  • 运行jar包

所以我们自定义镜像流程:

  • 准备Linux运行环境(java项目并不需要完整的操作系统,仅仅是基础运行环境即可)

  • 安装并配置JDK

  • 拷贝jar包

  • 配置启动脚本

一.Dockerfile文件

由于制作镜像的过程中,需要逐层处理和打包,比较复杂,所以Docker就提供了自动打包镜像的功能。我们只需要将打包的过程,每一层要做的事情用固定的语法写下来,交给Docker去执行即可,而这种记录镜像结构的文件就称为Dockerfile,其对应的语法可以参考官方文档

Dockerfile reference | Docker Docs

例如,要基于Ubuntu镜像来构建一个Java应用,其Dockerfile内容如下

Dockerfile的文件名就是? ?Dockerfile 全名就是这个没有什么后缀

新建一个Dockerfile文件

里面内容如下

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

FROM openjdk:11.0-jre-buster? ?//表示基础镜像,里面有Ubuntu镜像跟jdk环境,jdk11,你可改

jdk的版本,要jdk8版本的,就把改成? ?FROM openjdk:8-jre-buster ,要jdk17就改成

FROM openjdk:17-jre-buster??

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone? ? ?//表示是设定时区的,照着写就行了

COPY docker-demo.jar /app.jar? ? ? ? ?//表示复制jar包?, docker-demo.jar是你打包好的后端工程jar包的路径文件,假如你把jar包放在虚拟机中的根目录root目录中,你可以像我一样只写文件名,你也可以写路径名,??COPY /root/docker-demo.jar /app.jar

/app.jar? 表示把虚拟机的jar包复制在创建的容器中的 /app.jar 中

ENTRYPOINT ["java", "-jar", "/app.jar"]? ?//表示是入口文件,容器创键会同时执行的命令

是我们平常用命令行启动jar包的命令? ?,后端工程默认端口是8080,你可以增加参数修改端口号

ENTRYPOINT ["java", "-jar", "-Dserver.port=8090"?,"/app.jar"]? ? ?修改后端工程的端口号是8090

二.构建镜像

准备好Dockerfile文件后,开始构建镜像

先进入Dckerfile文件存放的目录 ,我的Dockerfile文件存放在/root/demo? 中

进入目录,构建镜像

# 进入镜像目录
cd /root/demo
# 开始构建
docker build -t docker-demo:1.0 .
  • docker build: 就是构建一个docker镜像

  • -t docker-demo:1.0-t参数是指定镜像的名称(repositorytag)冒号后面不写,默认版本是latest

  • .? : 最后的点是指构建时Dockerfile所在路径,由于我们进入了demo目录,所以指定的是.代表当前目录,也可以直接指定Dockerfile目录

docker build -t docker-demo:1.0 /root/demo

构建完后查看镜像列表?

输入命令? ?docker images? ?查看镜像列表

镜像创建成功

三.创建容器

创建完后端工程的镜像开始创建容器

# 1.创建并运行容器
docker run -d \
--name dd \
 -p 8090:8090 \
docker-demo:1.0

run? //表示创建容器

-d? ?//表示创建容器并在后台运行,容器创建成功会自动运行

\? ? //表示转行

--name dd? ? //表示创建容器的名字

-p? ?//表示映射的端口,访问虚拟机的8080号端口等于访问容器的8080号端口,后端工程默认的端口是8080号。你可以在入口命令添加参数中修改

docker-demo:1.0? ?//表示镜像名

创建完后输入命令查看容器

docker ps? ?可以查看创建的容器??

之后想启动容器执行命令

docker start dd

dd表示是容器名

至此,docker部署后端工程就完成了,谢谢你的观看

文章来源:https://blog.csdn.net/2301_79385221/article/details/135165565
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。