0


使用Docker挂载部署JAVA项目

用于需要使用Docker容器部署项目,但可能部署包需多次调整的场景,这种部署方式可以减少镜像制作的过程;
推荐几个使用Docker安装环境的文章:
1.Nocas: https://blog.csdn.net/weixin_44700323/article/details/140995859
2.Mysql: https://blog.csdn.net/wangshu9939/article/details/139153044
3.Nginx: https://blog.csdn.net/xiangxi1204/article/details/138636361
4.Redis: https://blog.csdn.net/Xixi0864/article/details/136559504

一、拉取JAR包启动基础镜像(JDK)

1. 拉取JDK镜像

首先,拉取对应版本的JDK镜像文件作为基础镜像。可以使用以下命令拉取指定版本的JDK镜像(此处以JDK17为例)

docker pull openjdk:17-jdk

在这里插入图片描述

二、挂载数据卷方式启动JDK容器(同时启动项目)

1.创建数据挂载目录

创建日志和配置文件及项目目录:

mkdir-p /opt/project
mkdir-p /opt/project/log

2. 启动(java)项目容器

docker run -d-p8091:8091 \-v /opt/project/server-1.0.0.jar:/my.jar \-v /opt/project/application.yml:/application.yml \-v /opt/project/logs/my_project.log:/var/log/my_project.log \--name my_project --privileged=true \
  openjdk:17-jdk sh-c"nohup java -jar /my.jar --spring.config.location=/application.yml > /var/log/my_project.log 2>&1 & tail -f /dev/null"

参数解析:

(1)

docker run -d
  • docker run:用于创建并运行一个新的容器实例。
  • -d:以守护进程(detached)模式运行容器。即容器会在后台运行,不会阻塞当前终端。

(2)

-p 8091:8091
  • -p:指定端口映射。格式为 宿主机端口:容器内部端口
  • 8091:8091:将宿主机的8091端口映射到容器内部的8091端口。这样,在宿主机上访问 localhost:8091 时,将请求转发到容器的 8091 端口。

(3)

-v /opt/project/server-1.0.0.jar:/my.jar
  • -v:用于将宿主机上的文件或目录挂载到容器内的文件或目录。。
  • /opt/project/server-1.0.0.jar:/my.jar:将宿主机上的 /opt/project/server-1.0.0.jar 文件挂载到容器内部的 /my.jar。容器内的Java应用将运行这个JAR文件。

(4)

 -v /opt/project/application.yml:/application.yml
  • -v:再次使用挂载选项。
  • /opt/project/application.yml:/application.yml:将宿主机上的配置文件/opt/project/application.yml挂载到容器内的 /application.yml,使得应用可以读取这个配置文件。

(5)

-v /opt/project/logs/my_project.log:/var/log/my_project.log
  • -v:将日志文件挂载。
  • /opt/project/logs/my_project.log:/var/log/my_project.log:将容器内部生成的日志文件 /var/log/my_project.log 映射到宿主机的 /opt/project/logs/my_project.log。容器中的日志会被写入宿主机上的这个文件。

(6)

--name my_project
  • --name:为容器指定一个名称,方便管理和查看容器。
  • my_project:容器名称为 my_project。你可以通过这个名称来管理该容器(如启动、停止、删除等操作)。

(7)

--privileged=true
  • --privileged=true:给容器赋予额外的权限,使得容器可以执行宿主机上原本需要高权限的操作。例如访问硬件设备或更改系统参数。

(8)

 openjdk:17-jdk
  • openjdk:17-jdk:这是使用的 Docker 镜像,基于 OpenJDK 17,它包含了 JDK 的工具和库。此镜像为运行Java应用提供了运行时环境。

(9)

- sh -c "nohup java -jar /my.jar --spring.config.location=/application.yml > /var/log/my_project.log 2>&1 & tail -f /dev/null"
  • sh -c:执行 shell 命令。
  • nohup:让 Java 应用在后台运行,忽略 HUP 信号(即使容器的前台进程结束,应用也不会随之终止)。
  • java -jar /my.jar --spring.config.location=/application.yml:执行 Java 命令,运行挂载到容器的 JAR 文件,并指定 Spring Boot 配置文件的路径为 /application.yml
  • /var/log/my_project.log 2>&1:将标准输出和错误输出都重定向到 /var/log/my_project.log,并且这个路径已经映射到宿主机上的日志文件。
  • tail -f /dev/null:容器默认需要一个前台进程来保持运行。tail -f /dev/null 是一种常见的做法,用来让容器保持持续运行,而不会因主进程结束导致容器退出。

三、常见容器操作命令(如:容器提取成镜像、 将镜像导出到当前目录等)

  • 创建容器
docker create -it--name2021000000000000  loongsongd/debian/sdf:v2.0 /start.s
  • 将文件从主机复制到docker容器中
dockercp 文件 容器ID:目的目录 
  • 将容器中文件导出导本地
dockercp 容器ID:文件  本地目录
  • 容器提取成镜像 – (版本号及镜像名称一样对当前镜像升级)
docker commit -a"作者名字"-m"镜像说明" 容器id  镜像名字:版本

docker commit -a"ccms"-m"init" 容器id  name:v1
  • 将镜像打包到当前目录
docker save -o ***.tar 镜像名字:版本
  • 将tar压缩包加载为镜像
docker load -i ***.tar
  • docker基本配置 放开2375端口
vi /lib/systemd/system/docker.service
  • 进入容器
dockerexec-it 【name】 /bin/bash
  • 查看doker容器(虚拟密码机)内存大小
docker inspect 【name】 |grep-i  mem
  • 查看容器使用资源情况
docker stats 【容器明】

标签: docker java 容器

本文转载自: https://blog.csdn.net/qq_41341640/article/details/142208673
版权归原作者 想做一个小孩的杨先生 所有, 如有侵权,请联系我们删除。

“使用Docker挂载部署JAVA项目”的评论:

还没有评论