【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

结果

成功!


目录
相关文章
|
4月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
220 5
|
4月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1901 4
|
4月前
|
机器学习/深度学习 人工智能 监控
Java与AI模型部署:构建企业级模型服务与生命周期管理平台
随着企业AI模型数量的快速增长,模型部署与生命周期管理成为确保AI应用稳定运行的关键。本文深入探讨如何使用Java生态构建一个企业级的模型服务平台,实现模型的版本控制、A/B测试、灰度发布、监控与回滚。通过集成Spring Boot、Kubernetes、MLflow和监控工具,我们将展示如何构建一个高可用、可扩展的模型服务架构,为大规模AI应用提供坚实的运维基础。
367 0
|
4月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1344 7
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
767 4
|
4月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
3251 8
|
5月前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
253 1
|
5月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
494 12
docker 部署 sftp
|
5月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。