【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

结果

成功!


目录
相关文章
|
8天前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
7天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
4天前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
40 17
|
19天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
43 3
实战~如何组织一个多容器项目docker-compose
|
26天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
119 26
|
2月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
62 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
1月前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
38 2
|
2月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
2月前
|
Java
Java项目中高精度数值计算:为何BigDecimal优于Double
在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。
|
2月前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
51 3