使用Docker中构建Java jar包,并且实现开启自启

文章目录

Docker中构建Java JAR包

要在Docker容器中构建Java应用程序的JAR包,你可以遵循以下步骤:

1.创建Dockerfile

在你的项目根目录下创建一个名为 Dockerfile 的文件,用来定义Docker镜像的构建过程。

bash 复制代码
# 使用官方的 Java 11 镜像作为基础镜像
FROM openjdk:11

# 设置工作目录
WORKDIR /app

# 将本地的 JAR 文件复制到容器中的工作目录
COPY target/your-application.jar /app/your-application.jar

# 定义容器启动时执行的命令
CMD ["java", "-jar", "your-application.jar"]

2.构建Docker镜像

使用 docker build 命令来构建Docker镜像。确保在你的项目根目录下执行此命令。

bash 复制代码
docker build -t your-image-name .

其中,your-image-name 是你希望给你的Docker镜像起的名称。

3.运行Docker容器

使用 docker run 命令来运行你的Docker容器。

bash 复制代码
docker run -p 8080:8080 your-image-name

这里假设你的应用程序将在容器内部的8080端口运行,并且你希望将容器的8080端口映射到主机的8080端口。

这样就可以在Docker容器中成功构建和运行你的Java应用程序的JAR包了。确保在运行 docker build 命令之前已经构建了你的Java应用程序的JAR包,并将其放置在适当的位置。

4.后台运行并且可以开机自启

要在后台运行Docker容器,并且在开机时自动启动,你可以使用以下步骤:

4.1 在后台运行Docker容器

要在后台运行Docker容器,可以使用 -d 参数。

bash 复制代码
docker run -d -p 8080:8080 your-image-name

这将使容器在后台以守护进程模式运行。

4.2 设置开机自启动容器

为了在开机时自动启动容器,你可以使用Docker的restart选项。

首先,为容器添加 --restart 选项:

bash 复制代码
docker run -d --restart always -p 8080:8080 your-image-name

这样,容器会在启动时自动启动,并且如果容器因任何原因停止,Docker也会自动重新启动它。

4.3 在Docker守护程序启动时自动启动容器

如果你想在Docker守护程序启动时自动启动容器,你可以使用系统级的工具(如 systemd)来管理Docker容器。

以下是一个使用 systemd 的示例配置:

首先,创建一个名为

your-container-name.service 的文件,例如 my-java-app.service,内容如下:

bash 复制代码
[Unit]
Description=My Java App
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker run -d --name my-java-app -p 8080:8080 your-image-name
ExecStop=/usr/bin/docker stop -t 2 my-java-app
ExecStopPost=/usr/bin/docker rm -f my-java-app

[Install]
WantedBy=default.target

然后将该文件移动到 /etc/systemd/system/ 目录下,并执行以下命令启用该服务并启动它:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable my-java-app.service
sudo systemctl start my-java-app.service

这样,当你的系统启动时,Docker服务会自动启动,并且在Docker服务启动后,my-java-app 容器也会自动启动。


积极的人在每一次忧患中都看到一个机会, 而消极的人则在每个机会都看到某种忧患。


相关推荐
达文汐几秒前
【困难】力扣算法题解析LeetCode332:重新安排行程
java·数据结构·经验分享·算法·leetcode·力扣
培风图南以星河揽胜2 分钟前
Java版LeetCode热题100之零钱兑换:动态规划经典问题深度解析
java·leetcode·动态规划
启山智软25 分钟前
【中大企业选择源码部署商城系统】
java·spring·商城开发
我真的是大笨蛋27 分钟前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化
啦啦啦小石头30 分钟前
Docker 换源
docker
怪兽源码1 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
恒悦sunsite1 小时前
Redis之配置只读账号
java·redis·bootstrap
梦里小白龙1 小时前
java 通过Minio上传文件
java·开发语言
人道领域1 小时前
javaWeb从入门到进阶(SpringBoot事务管理及AOP)
java·数据库·mysql
sheji52611 小时前
JSP基于信息安全的读书网站79f9s--程序+源码+数据库+调试部署+开发环境
java·开发语言·数据库·算法