【Docker】部署启动java项目

简介: 【Docker】部署启动java项目

公司想用docker部署项目,先写个demo测试一下

概述

以下是Docker部署启动Java项目的简要步骤:

创建一个Dockerfile,该文件定义了如何构建您的Java应用程序的Docker镜像。Dockerfile包含以下内容:

使用OpenJDK基础镜像

设置工作目录为/app

将当前目录中的JAR文件复制到镜像中的/app目录

暴露应用程序的端口(如果需要)

定义应用程序的启动命令为运行JAR文件

使用Dockerfile构建Docker镜像。在终端中导航到包含Dockerfile的目录,并运行docker build -t my-java-app .命令。这将创建名为"my-java-app"的Docker镜像。

运行Docker容器以启动Java应用程序。在终端中运行docker run -p 8080:8080 my-java-app命令。这将创建一个名为"my-java-app"的容器,并将容器的8080端口映射到主机的8080端口。如果您的应用程序使用不同的端口,请相应地更改端口号。

现在,您的Java应用程序应该在Docker容器中运行,并通过主机的8080端口访问。

探索

要在Docker中部署和启动Java项目,您需要执行以下步骤:

创建一个Dockerfile,用于定义如何构建您的Java应用程序的Docker镜像。以下是一个示例

Dockerfile:

# 使用基础镜像  
FROM openjdk:8-jdk-alpine  
  
# 设置工作目录  
WORKDIR /app  
  
# 将当前目录中的JAR文件复制到镜像中的/app目录  
COPY target/my-java-app.jar /app/my-java-app.jar  
  
# 暴露应用程序的端口(如果需要)  
EXPOSE 8080  
  
# 定义应用程序的启动命令  
CMD ["java", "-jar", "my-java-app.jar"]

2.使用Dockerfile构建Docker镜像。在终端中导航到包含Dockerfile的目录,并运行以下命令:

docker build -t my-java-app .

这将创建一个名为"my-java-app"的Docker镜像。

3. 运行Docker容器以启动Java应用程序。使用以下命令:

docker run -p 8080:8080 my-java-app

这将创建一个名为"my-java-app"的容器,并将容器的8080端口映射到主机的8080端口。如果您的应用程序使用不同的端口,请相应地更改端口号。

现在,您的Java应用程序应该在Docker容器中运行,并可以通过主机的8080端口访问。请确保

将"my-java-app.jar"替换为您的实际Java应用程序的JAR文件名,以及根据您的需求调整端口号和其他设置。

实战

步骤

首先将jar上传到服务器

新建一个文件,文件名Dockerfile (注意大小写)

Dockerfile

FROM java:8
VOLUME /tmp
ADD origin-elk-1.0.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

参数的相关解释:

从docker仓库获取openjdk作为我们项目的容器

  1. VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/usr/local/apps目录下创建了一个临时文件,并连接到容器的/tmp。项目的docker-demo-0.0.1.jar作为app.jar添加到容器。ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向/dev/urandom 作为 Entropy Source
  2. from java:8 拉取一个jdk为1.8的docker image
  3. demo-0.0.1-SNAPSHOT.jar 就是你上传的jar包,替换为jar包的名称
  4. demo.jar 是你将该jar包重新命名为什么名称,在容器中运行
  5. expose 该容器暴露的端口是多少,就是jar在容器中以多少端口运行
  6. entrypoint 容器启动之后执行的命令,java -jar demo.jar 即启动jar

启动

docker build -t jerome.xin/docker-demo:latest .
• 1

结果

成功!


目录
相关文章
|
23天前
|
数据采集 存储 Docker
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
深入理解Docker:为你的爬虫项目提供隔离环境
|
20天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
168 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
17天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
195 91
|
18天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
2月前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
8天前
|
人工智能 文字识别 安全
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Stirling-PDF 是一款基于 Docker 的本地化 PDF 编辑工具,支持 50 多种 PDF 操作,包括合并、拆分、转换、压缩等,同时提供多语言支持和企业级功能,满足个人和企业用户的多样化需求。
56 6
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
|
25天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
110 44
|
5天前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
36 19
|
22天前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
96 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
23天前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
83 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战

热门文章

最新文章