构建自定义Docker镜像部署Jar包

简介: 构建自定义Docker镜像部署Jar包

为了能正常地使用Docker容器,需要先安装Docker和Docker compose,如何安装可以查看Docker、Docker compose的安装

文件布局

在相关工具都安装完毕后,为了顺利构建自定义Docker镜像,我们需要准备以下文件:

  • JDK11,可在oracle官网下载,需要注册oracle账号。百度网盘自取 密码:6lo7
  • Dockerfile,这个需要我们自己编写,用来构建自定义容器
  • Jar包,对应的应用程序Jar包,需要自己打好
  • docker-compose,用来运行容器,相当于包装了docker命令的工具

以上四个文件全部在同一个文件夹下面。

编写Dockerfile文件

Dockerfile

# 基础镜像
FROM centos:7
# 作者,建议写自己的邮箱
LABEL maintainer="zouwei"
# 把jar包拷贝进镜像内指定路径下
COPY jtt808-server.jar /root
# 把jdk拷贝到指定路径下
COPY jdk-11.0.16_linux-x64_bin.tar.gz /usr/local/
# 执行tar解压缩命令,把jdk解压缩到/usr/local/路径下
RUN tar -zxvf /usr/local/jdk-11.0.16_linux-x64_bin.tar.gz -C /usr/local/
# 配置java环境变量
ENV JAVA_HOME /usr/local/jdk-11.0.16/
ENV PATH $JAVA_HOME/bin:$PATH
# 设置容器启动命令
ENTRYPOINT ["nohup","java","-jar","-Dfile.encoding=UTF-8","/root/jtt808-server.jar","&"]
复制代码

上面的文件名称默认就是"Dockerfile",没有任何后缀。

文件内容中的"jtt808-server.jar"可以替换成自己的jar文件;对应的作者也请改成自己。在启动命令中,可以根据自己的实际情况补充其他参数,比如jvm的配置参数等等。

编写docker-compose.yml

docker-compose.yml

version: "3.2"
services:
  jt808:
    # build表示需要构建自己的镜像,.代表从当前文件夹中查找Dockerfile文件
    build: .
    # 容器名称
    container_name: "jt808_server"
    ports:
      # 容器需要对外透露的端口
      - "8000:8000"
      - "7611:7611"
      - "7612:7612"
    # 容器挂了是否重启
    restart: always
    volumes:
      #设置系统时区
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime"
      #设置时区
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"
复制代码

构建镜像

docker-compose.yml编写完毕后,需要通过以下命令先构建自定义的Docker镜像:

docker-compose build
复制代码

该命令一定要在docker-compose.yml所在文件夹的路径执行。任何修改了Dockerfile文件的操作都需要重新构建该镜像。

启动服务

镜像构建完毕后,我们可以通过下面的命令把对应的容器实例启动起来:

docker-compose up
复制代码

此时控制台会打印应用程序的启动日志。

如果需要让该应用程序在后台线程启动,可以使用以下命令:

docker-compose up -d
复制代码

完成上面步骤,我们就完成了通过自定义构建的镜像部署了自己的jar包。

思路2

在上面这个方案当中,我们发现每次构建镜像都要把jdk拷贝进去,本质上jdk是永远不需要我们手动修改的,所以在思路2中我们需要做的优化就是:

  • 通过Dockerfile构建一个只有jdk的镜像,暂时先不把jar包放进去;
  • 把构建好的镜像上传到云端仓库;可上传阿里云或私人仓库;
  • 通过Dockerfile基于云端仓库镜像构建新镜像,这个新镜像每次构建只需要COPY jar包进去;
  • docker-compose.yml可不修改

通过提前构建好的java镜像,我们以后都可以在任意网络允许的服务器上运行jar包,不再需要去下载jdk安装包了。


相关文章
|
5月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
2212 4
|
5月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
260 5
|
5月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1612 8
|
5月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
833 4
|
Java
[JarEditor]可直接修改jar包的IDEA插件
### 修改JAR包变得更简单:JarEditor插件简介 **背景:** 开发中常需修改JAR包中的class文件,传统方法耗时费力。JarEditor插件让你一键编辑JAR包内文件,无需解压。 **插件使用:** 1. **安装:** 在IDEA插件市场搜索JarEditor并安装。 2. **修改class:** 打开JAR文件中的class,直接编辑,保存后一键构建更新JAR。 3. **文件管理:** 右键菜单支持在JAR内新增/删除/重命名文件等操作。 4. **搜索:** 使用内置搜索功能快速定位JAR包内的字符串。
2285 2
[JarEditor]可直接修改jar包的IDEA插件
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
监控 Ubuntu Java
如何在Ubuntu上运行Jar包?
【7月更文挑战第9天】
1456 0
如何在Ubuntu上运行Jar包?

热门文章

最新文章