构建自定义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安装包了。


相关文章
|
2天前
|
应用服务中间件 Docker 容器
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
这篇文章介绍了在Docker中安装Tomcat的过程,包括搜索Tomcat镜像、拉取镜像、目录挂载的准备、创建并挂载容器,以及如何进入容器和进行测试。文中还说明了如何将WAR包部署到Tomcat服务器并访问部署的应用。
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
|
5天前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
2天前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2天前
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
5天前
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
|
5天前
|
Java Nacos Docker
"揭秘!Docker部署Seata遇上Nacos,注册成功却报错?这些坑你不得不防!一网打尽解决秘籍,让你的分布式事务稳如老狗!"
【8月更文挑战第15天】在微服务架构中,Nacos搭配Seata确保数据一致性时,Docker部署Seata后可能出现客户端连接错误,如“can not connect to services-server”。此问题多由网络配置不当、配置文件错误或版本不兼容引起。解决策略包括:调整Docker网络设置确保可达性;检查并修正`file.conf`和`registry.conf`中的Nacos地址和端口;验证Seata与Nacos版本兼容性;修改配置后重启服务;参考官方文档和最佳实践进行配置。通过这些步骤,能有效排除故障,保障服务稳定运行。
16 0
|
5天前
|
存储 Ubuntu Linux
如何在 Ubuntu 上使用 Docker 容器化和部署多个 WordPress 应用程序
如何在 Ubuntu 上使用 Docker 容器化和部署多个 WordPress 应用程序
12 0
|
5天前
|
存储 Shell API
G6VP 与 GraphScope部署问题之拉取并启动 GraphScope 的 Docker 镜像如何解决
G6VP 与 GraphScope部署问题之拉取并启动 GraphScope 的 Docker 镜像如何解决
|
Kubernetes 应用服务中间件 Docker
Docker——自定义网络实现
Docker——自定义网络实现
451 0
|
3月前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
196 6