docker 构建指定版本的jdk容器,并用docker部署jar包

这篇具有很好参考价值的文章主要介绍了docker 构建指定版本的jdk容器,并用docker部署jar包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker 构建指定版本的jdk容器,并部署jar包

阅读前置要求

  • 有在Linux系统安装docker的经验,
  • 会使用docker常用命令,能明白构建docker容器参数的含义

1、 新建目录,并创建 Dockerfile 文件

# 新建目录,并创建 Dockerfile 文件
$ mkdir -p /mydata/docker/dockerfiles    # -p参数,允许创建多个文件夹
$ vim /mydata/docker/dockerfiles/Dockerfile

# 上传 jdk1.8安装包和jar包,并放到dockerfiles目录下,跟Dockerfiles文件同级目录
$ mv /home/vagrant/jdk-8u361-linux-aarch64.tar.gz /mydata/docker/dockerfiles/

2、vi 编辑 Dockerfile 文件内容 ,并保存

将如下内容拷贝 到 Dockerfile ,保存并退出。
我用的jdk安装包是 jdk-8u361-linux-aarch64.tar.gz,你只需要修改它换成你的jdk安装包

#!/bin/bash
FROM centos:7
MAINTAINER hzl
# 设置系统编码
RUN yum install kde-l10n-Chinese -y
RUN yum install glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN export LANG=zh_CN.UTF-8
RUN echo "LANG=zh_CN.UTF-8" > /etc/locale.conf
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
# ADD 拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压 (注意:拷贝的文件要跟Dockerfile文件同级)
# 将jdk1.8添加到/usr/local/pro/jdk目录下并解压
ADD jdk-8u361-linux-aarch64.tar.gz /usr/local/jdk
ENV JAVA_HOME=/usr/local/jdk/jdk1.8.0_361
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

3、 构建镜像

# 以cenos7为基础,安装jdk1.8后构建容器,名为:java ,版本号:jdk1.8.0_361
$ docker build -t java8:jdk1.8.0_361 /mydata/docker/dockerfiles/

# 查看本地仓库,镜像是否安装成功
$ docker images

4、部署jar包

$ docker run -d -p 88:88 --restart=always \
-v /home/vagrant/xxx-gateway-0.0.1-SNAPSHOT.jar:/usr/local/jar/xxx-gateway.jar \
--name xxx-gateway java8:jdk1.8.0_361  java -jar -Dserver.port=88 /usr/local/jar/xxx-gateway.jar

FAQ

FAQ1 :docker启动后 ,提示“standard_init_linux.go:211: exec user process caused “exec format error“”

docker buildjdk镜像后,用命令docker inspect 容器id | grep Architecture,检查Linxu版本,发现是 官网下载的jdk 打包的Linux系统是 arm64

原因:Linxu版本不兼容

我主机运行的 Linux version是 3.10.0-1127.el7.x86_64 ,
而官网下载的jdk1.8 构建后的Linxu version 显示是 arm64系统
由于Linxu 版本不兼容才导致的这个问题。 如果一定要使用官网jdk1.8的话,要解决这个问题,我就只能换一个LInux系统版本,换成跟官网jdk匹配的arm64系统,这样无疑浪费时间。

排查过程参考: standard_init_linux.go:211: exec user process caused “exec format error“_星光落入你灰蒙蒙的眼的博客-CSDN博客

解决办法

我的办法是:换一个能在我这个Linxu系统版本跑的 jdk 安装包,从docker远程仓库下载 ,命令:docker pull ibmjava
详细安装过程看我另外一篇文章 docker 安装 jdk 环境(从远处仓库下载安装)

安装完成后,使用 docker images 命令,查看新的镜像文章来源地址https://www.toymoban.com/news/detail-490342.html

# 启动ibmjava 容器, 部署jar包
$ docker run -d -p 88:88 --restart=always \
-v /home/vagrant/xxx-gateway-0.0.1-SNAPSHOT.jar:/usr/local/jar/xxx-gateway.jar \
--name xxx-gateway ibmjava  java -jar -Dserver.port=88 /usr/local/jar/xxx-gateway.jar

# 查看容器启动日志
$ docker logs xxx-gateway

FAQ2 :docker logs查看jar启动日志,提示“‘no main manifest attribute, in /xx/xx.jar“

原因 :打包问题,没有把启动类打进去。

解决办法:修改pom文件,重新打包

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
  
    <configuration>
         <includeSystemScope>true</includeSystemScope>
        <!--  指定启动类,打包时带上启动类打包 -->
         <mainClass>xxx.xxx.xxx.Application</mainClass>
    </configuration>
</plugin>

到了这里,关于docker 构建指定版本的jdk容器,并用docker部署jar包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker部署(1)——将jar包打成docker镜像并启动容器

            在代码编写完成即将部署的时候,如果采用docker容器的方法,需要将jar包打成docker镜像并通过镜像将容器启动起来。具体的步骤如下。         先使用docker search java命令进行搜索。          然而在拉取镜像的时候要注意不能直接去选择pull java ,不然会出现

    2024年02月11日
    浏览(33)
  • 指定JDK运行Jar包

    找到JDK安装路径如下路径 E:JavajavaJDKbinjava.exe 正常运行Jar包为 java -jar xxx.jar 指定jdk运行 E:JavajavaJDKbinjava.exe -jar xxx.jar 启动方式一 在jar包所在文件夹打开命令窗口,输入以下命令 java -jar app.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退

    2024年02月04日
    浏览(25)
  • 【SpringBoot】| (保姆级)部署SpringBoot项目到docker容器Ⅱ | JDK11

    作者:狮子也疯狂 专栏:《spring开发》 坚持做好每一步,幸运之神自然会驾凌在你的身上 最近在帮一个小伙伴弄一个毕设,项目写好了,需要部署一下。简单记录一下步骤! 大致过程如下: 本地将SpringBoot应用打包成jar——本地编写好Dockerfile( 或者在服务器上边写,这里

    2023年04月15日
    浏览(31)
  • 四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)

    现有环境如下: 1.工作目录下有若干个可执行的jar包:在工作目录下打开命令行进行操作(Windows和Linux版的docker均可,这里以Windows为例) 2.拉取任意一个能运行jar包的jdk镜像:我的是adoptopenjdk/openjdk12 3.已具备jar包所需的基本组件:例如mysql、redis、nacos等 假如我只想将nettys

    2024年02月04日
    浏览(40)
  • 指定jdk启动jar包的方法

    一、windows版本下项目启动 1、编写一个run.bat文件,具体内容增减,根据个人所需,内容如下 2、编写一个stop.bat文件,内容根据个人所需进行增减,内容如下: 二、linux环境下项目启动 方法一、 窗口关闭,服务即停止。通过Java路径来启动对应的项目 示例如下: 方法二、 后

    2024年02月13日
    浏览(26)
  • Docker安装Nginx并部署&MySQL容器构建

    将配置文件上传到conf文件夹(数据库配置文件已放到置顶资源中) /soft/mysql/conf/my.cnf:/etc/my.cnf目录为我们配置绑定的目录 /soft/mysql/data:/var/lib/mysql 是将data目录与MySQL目录进行绑定 进入到我们的MySQL容器中(m1为容器名)  进入容器后登录到MySQL 输入密码后进入到MySQL赋予权限 

    2024年01月19日
    浏览(38)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月05日
    浏览(57)
  • SpringBoot项目部署(Docker)——通过Dockerfile将打包好的jar包创建成镜像 & 在IDEA中配置docker,一键启动容器 & 用swagger进行测试

    1.Dockerfile命令初识,CMD…; 2.idea配置docker,图形化界面; 3.编写Dockerfile把jar包制作成镜像,并用idea一键生成和启动容器; 4.在Linux中测试,在宿主机用swagger进行测试; SpringBoot项目部署(jar包)——项目用maven打包成jar包 windows + Linux平台运行 Linux安装java 遇到的问题 Docker是一

    2024年02月05日
    浏览(40)
  • Docker 多主机部署:构建容器集群的最佳实践,助力高可用性与负载均衡

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(44)
  • K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(上)

    🔼上一集:win11+vmware17+centos7.9环境搭建 *️⃣主目录:温故知新专栏 🔽下一集:K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(下) 之前部署过dolphinscheduler3.1.8,看页面增加了K8S模块,所以想着部署一下K8S,学习一下,而且海豚调度也提供了K8S部署方式,经过一番了解,发现

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包