基本方法
java -jar 对应的jar包名字
永久后台方法
有一种叫做“nohup”的命令,该命令可以让您的应用程序在后台运行,即使您已经断开了与终端的连接也能保持运行状态。
nohup 命令的语法为:
nohup command arg1 arg2 ... argN &
其中,command 是要运行的应用程序的命令,arg1、arg2…argN 则是该命令的参数。& 符号表示在后台运行该命令。当运行 nohup 命令时,所有的输出将写入到 nohup.out 文件中。可以通过检查这个文件来查看应用程序在后台运行的状态和输出。如果您想要停止应用程序,请使用 kill 命令,并指定应用程序的进程 ID。
运行jar包的指令
nohup java -jar XXXXXX.jar &
参数解释:
这个命令将在后台运行 XXXX.jar 的 Java 应用程序,并将输出写入 nohup.out 文件中。您可以使用命令“tail -f nohup.out”来查看该文件的内容,以检查应用程序正在后台运行的状态和输出。
tail -f nohup.out
如果想指定日志的位置以及日志文件名称
nohup java -jar XXXX.jar >> ./log/XXXX.log 2>&1 &
代码参数说明:
在这个命令中,输出会被重定向到 ./log/XXXX.log 文件中,使用“>>”操作符以追加的方式写入数据。其中“2>&1”表示将标准错误输出(stderr)合并到标准输出(stdout)中,以便将错误信息也写入同一个日志文件中。
这样操作可以让您更好地跟踪和调试应用程序,并根据需要对日志进行分析和处理。
日志位置:
如果将日志输出重定向到指定的日志文件(如 ./XXXX.log),那么日志文件将会在指定的路径中生成。在本例中,日志文件将生成在当前工作目录下的 log 目录中,文件名为 ad.log。
如果没有指定日志输出到特定的文件中,而是使用默认的行为,则在运行 nohup 命令时生成的 nohup.out 文件中包含了输出信息和错误信息。nohup.out 文件将生成在运行命令时的当前目录下。
请注意,日志路径的实际位置取决于在 nohup 命令中指定的路径。可以更改路径,以便生成日志文件的位置适合需求。
停止jar包运行
如果是在 Linux 操作系统上使用 nohup java -jar XXXX.jar & 运行的 jar 包,您可以使用以下命令来查看该进程:根据jar包名来查找运行的jar包
ps -ef | grep XXXXXX.jar
根据端口号来查找运行的jar包
ps -ef | grep <端口号>
这会显示一个包含进程信息的列表,其中包括进程 ID(PID),您可以使用此 ID 杀死进程:
kill
请注意,使用 kill 命令强制终止一个进程可能会导致数据损坏或其他意外的结果,因此请在确保没有正在进行重要操作的情况下使用此命令。
jar包部署docker容器中
思路:
1、通过数据卷的方式将docker容器中的指定文件夹挂载到宿主机上,更新jar包只上传到宿主机的指定路径就可以。
2、利用脚本bash文件来运行构建jar包,并构建该bash的镜像,代替直接运行jar包的镜像。利于镜像与jar包之间的关系健康
准备工作
1、在宿主机中创建存放docker配置文件,jar包的文件夹
在宿主机上,创建文件夹: 可以自己指定路径 ,用于存放bash文件和jar包。然后在该文件夹下面,创建一个bash文件和容器的配置文件。
2、创建bash文件
首先要看清楚自己现在所在的路径是否正确,这是我存放的位置。
在app的文件路径下创建脚本
vi run.sh
下面的是run.sh文件中的内容
java -jar /usr/data/XXXX.jar
方法说明:
/usr/data是docker容器内的路径。
这是docker自己管理的,我们不需要真的到docker容器内创建这个路径。
后面会将此路径挂载到当前文件夹:/usr/local/docker/app。这个脚本就是运行在docker容器中的/usr/data下面的指定jar包。
现在肯定有人疑惑,现在的jar包怎么来。或者说现在还没jar包,别急后面我们要挂载数据卷,数据卷中的jar包会同步到容器中去。现在是准备工作。
3、创建容器配置文件
创建一个dockerfile的配置文件,这个很重要再次强调这个文件一定是要在你的文件路径下的,和你的jar包位置在一起。因为这个文件一会要涉及到镜像的生成。
vi Dockerfile
这个是dockerfile文件中的内容
FROM openjdk:8-jdk-alpine
EXPOSE 需要映射的端口号
ENTRYPOINT ["sh","/usr/data/run.sh"]
代码说明:
这段代码是一个 Dockerfile,用于在 Docker 容器中启动一个基于 openjdk:8-jdk-alpine 镜像的 Java 应用。各行代码的解释如下:
- FROM openjdk:8-jdk-alpine:表示此 Dockerfile 基于 openjdk:8-jdk-alpine 镜像构建。
- EXPOSE XXXX:指定容器将监听的端口号
- ENTRYPOINT ["sh","/usr/data/run.sh"]:指定容器启动时的命令,即在容器内运行 /usr/data/run.sh 脚本。sh 是指定命令使用的 shell,因为 /usr/data/run.sh 可能需要 shell 解析才能正确执行。ENTRYPOINT 与 CMD 功能相似,但其中指定的命令会被视为不可替代的执行文件,CMD 会被视为 ENTRYPOINT 的参数。
- 通过“sh”来说明在启动的时候使用sh脚本文件,后面的第二个参数对脚本的位置进行了补充保证执行的时候可以正确的找到位置。
- /usr/data/run.sh:是一个脚本文件路径,用于启动 Java 应用。
构建镜像
还是在当前文件夹下面开始构建对象,一定要注意最后一个 点 ‘ . ’ 表示dockerfile文件在当前目录下面。这很重要
docker build -t 给镜像命名:版本号 .
举例说明
docker build -t app:1.0.0 .
请在命名的时候使用 'name:tag'的格式来给镜像命名。
创建容器并运行
docker run -d -it --name=myapp -p XXXX:XXXX -v /usr/local/docker/app:/usr/data app:1.0.0
参数说明:
重点:
--name :是我们的容器的名称
-p XXXX:XXXX:是要将主机的端口号映射到docker这个容器的端口号上去
-v 挂载数据卷 前面的路径是我们自己设置的路径 后面的路径是docker容器中的路径
最后是我们运行的容器的名字以及版本号
如果需要在docker重启后自动运行的话(开机自启动)
docker run --restart=always -d -it --name=myapp -p XXXX:XXXX -v /usr/local/docker/app:/usr/data app:1.0.0