当前位置: 首页 > news >正文

Docker学习(二十一)构建 java 项目基础镜像

目录

    • 1.下载 JDK 包
    • 2.编写 Dockerfile
    • 3.构建镜像
    • 4.创建容器测试

1.下载 JDK 包

JDK各版本官网下载地址: https://www.oracle.com/java/technologies/downloads/archive/#JavaSE

这里我们以 JDK 8u351 为例,点击 Java SE (8U211 and later)

在这里插入图片描述

点击下载 jdk-8u351-linux-x64.tar.gz

在这里插入图片描述

勾选接受协议,点击下载。(这里会需要登录一下,没有账号可以注册一个,Oracle账号以后也会用到)

在这里插入图片描述

下载后,文件如下:

在这里插入图片描述

2.编写 Dockerfile

创建一个用于构建镜像的文件夹,并在文件夹中新建一个文本文件,重命名为 Dockerfile,内容如下:

# 基础镜像(大小:155MB)
FROM quay.io/centos/centos:stream9
# 配置JAVA的环境变量
ENV JAVA_DIR=/usr/local
ENV JAVA_HOME=$JAVA_DIR/jdk1.8.0_351
# 配置到PAHT中
ENV PATH=$PATH:$JAVA_HOME/bin
# 添加 redis 客户端
ADD redis-cli /usr/bin
# 添加 JDK
ADD jdk-8u351-linux-x64.tar.gz $JAVA_DIR
# 安装、更新基础控件
RUN yum -q -y update && yum -q -y upgrade \&&  yum install -y tzdata vim less ncurses telnet wget zip unzip traceroute procps net-tools iproute tcpdump mysql postgresql \&&  ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&&  chmod +x /usr/bin/redis-cli \&&  yum clean all \&&  echo "alias ls='ls --color'" >> ~/.bashrc \&&  echo "alias ll='ls -l'" >> ~/.bashrc
# 需要下载文件的话可以用这个命令
#	&&  wget --quiet https://www.baidu.com/test.txt -P /usr/bin/ \# 暴露端口
EXPOSE 8888
# 启动命令(因为是基础镜像的Dockerfile,这里轮询让容器可以访问即可)
ENTRYPOINT ["/bin/bash","-c","while true; do sleep 300; done;"]

补充:

  • 基础镜像没有直接使用 openjdk:8-jdk 的镜像是因为镜像中没有 yum 命令,不方便后期更新和扩展控件。

  • 如果不需要使用 mysqlredis-clipostgresql 等命令可以直接去掉。

    redis-cli 下载地址:https://share.weiyun.com/f37Mekqs

3.构建镜像

在文件夹下执行如下命令,构建镜像:

docker build -t image_name:image_tag .

执行结果:

在这里插入图片描述

(yum安装控件可能需要等待 3 分钟左右)

查看创建好的镜像:

docker images | grep image_name

执行结果:

在这里插入图片描述

4.创建容器测试

创建容器:

docker run -d --name=container_name image_name:image_tag

进入容器:

docker exec -it container_name bash

查看 JDK 版本:

java -version

执行结果:

在这里插入图片描述

整理完毕,完结撒花~ 🌻





参考地址:

1.Docker部署java项目(Dockerfile方式),https://blog.csdn.net/zhabnghenglmm/article/details/124310381

2.[docker]-容器中支持ll命令,https://blog.csdn.net/xujiamin0022016/article/details/125341593

相关文章:

Docker学习(二十一)构建 java 项目基础镜像

目录1.下载 JDK 包2.编写 Dockerfile3.构建镜像4.创建容器测试1.下载 JDK 包 JDK各版本官网下载地址: https://www.oracle.com/java/technologies/downloads/archive/#JavaSE 这里我们以 JDK 8u351 为例,点击 Java SE (8U211 and later)。 点击下载 jd…...

python中的上下文原理

目录with语句上下文管理器原理自定义上下文管理器contextmanager 装饰器with语句 在我们日常使用场景中,经常会操作一些资源,比如文件对象、数据库连接、Socket连接等,资源操作完了之后,不管操作的成功与否,最重要的事…...

可复用测试用例描述要素

测试用例的输入、操作、预期结果和评估标准、前提条件是测试用例不可少的要素,但对于可复用测试用例而言,这是不够的。本文在文献规定的测试用例要素基础上,增加了新的内容。从而从多个角度完整地对可复用测试用例进行了描述,为可…...

lnmp中遇到open_basedir配置无效问题

在使用LNMP包安装PHP时,发现直接修改php.ini的配置是无法生效的,其原因竟然是因为nginx的配置文件,覆盖了php.ini的配置。 解决: 1、找到nginx的open_basedir配置文件:(下面是我的文件地址) …...

SpringBoot【知识加油站】---- REST开发

SpringBoot【知识加油站】---- REST开发1. REST 简介2. REST 风格3. RESTful 入门案例1. REST 简介 REST:Representaional State Transfer,表现形式状态转换 传统风格资源描述形式 http://localhost/user/getById?id1 http://localhost/user/saveUser…...

三 Go的语言容器

1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组 声明语法: var 数组变量名 [元素数量]Typepackage main import ("fmt" ) fu…...

2023年全国最新会计专业技术资格精选真题及答案16

百分百题库提供会计专业技术资格考试试题、会计考试预测题、会计专业技术资格考试真题、会计证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 一、单选题 1.下列各项关于会计监督职能的表述中,正确的是&#xff…...

模板进阶(仿函数,特化等介绍)

非类型模板参数 模板参数有类型形参和非类型形参&#xff1b; 类型形参&#xff1a;使用typename或者class修饰的参数类型名称 非类型形参&#xff1a;一个普通常量作为模板参数形参&#xff0c;不能为浮点数&#xff0c;字符类型以及类对象&#xff1b; #include<iostrea…...

Beats:在 Docker 中同时部署 Metricbeat 和 Elasticsearch

在本教程中&#xff0c;我们将部署一个 metricbeat 来监控正在运行的容器的健康状况和系统指标。 为什么需要监控&#xff0c;为什么需要 Metricbeat&#xff1f; 一个常见的问题&#xff0c;但很少有人回答。 首先&#xff0c;无论我们部署的是 docker 容器还是老式的金属箱&…...

编码技巧——Redis Pipeline

本文介绍Redis pipeline相关的知识点及代码示例&#xff0c;包括Redis客户端-服务端的一次完整的网络请求、pipeline与client执行多命令的区别、pipeline与Redis"事务"、pipeline的使用代码示例&#xff1b; pipeline与client执行多命令的区别 Redis是一种基于客户…...

ArcGIS制图技巧:制图入门与点、线、面状符号制作

目的&#xff1a; 1、了解地图制作目的&#xff1b; 2、了解在ArcMap平台中制作地图大致过程。 3、掌握地形图生成的操作&#xff1b; 4、掌握地形图的正确输出方法。 5、理解点状符号、线状符号、面状符号的基本概念&#xff1b; 6、理解地形点状符号、线状符号、面状符…...

Java基础 关于字典数据维护接口设计

开发环境 Eclipse2022JDK1.8 目录 1. 概述 2. 实现步骤 2.1 定义通用接口 2.2 定义实体类 2.3 接口扩展 2.4 接口实现 2.5 功能测试 3. 结语 1. 概述 每一个信息系统或多或少都带有一些数据字典&#xff0c;在维护上&#xff0c;基本上分为增删改查&#xff0c;也就是对数据…...

从零开始学架构——复杂度来源

复杂度来源——高性能 对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机,从电子管计算机到晶体管计算机再到集成电路计算机,运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高&#xff0c;相应的方法和系统复杂度也是越来越高。现代的计算机CPU集成…...

什么时候需要分表分库?

在当今互联网时代&#xff0c;海量数据基本上是每一个成熟产品的共性&#xff0c;特别是在移动互联网产品中&#xff0c;几乎每天都在产生数据&#xff0c;例如&#xff0c;商城的订单表、支付系统的交易明细以及游戏中的战报等等。对于一个日活用户在百万数量级的商城来说&…...

冰刃杀毒工具使用实验(29)

实验目的 &#xff08;1&#xff09;学习冰刃的基本功能&#xff1b; &#xff08;2&#xff09;掌握冰刃的基本使用方法&#xff1b;预备知识 windows操作系统的基本知识&#xff0c;例如&#xff1a;进程、网络、服务和文件等的了解。 冰刃是一款广受好评的ARK工…...

聊聊图像分割的DICE和IOU指标

目录 1. 介绍 2. dice 和 iou 的联系 3. 代码实现 3.1 dice 3.2 iou 3.3 test 3.4 dice 和 iou 的关系曲线 4. 代码 1. 介绍 dice 和 iou 都是衡量两个集合之间相似性的度量 dice计算公式&#xff1a; iou计算公式&#xff1a; iou的集合理解&#xff1a; iou 其实就…...

软件设计师教程(十)计算机系统知识-结构化开发

软件设计师教程 软件设计师教程&#xff08;一&#xff09;计算机系统知识-计算机系统基础知识 软件设计师教程&#xff08;二&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;三&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;…...

链表OJ之 快慢指针法总结

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 快慢指针指的是每次指针移动的步长&#xff0c;是解决链表相关的题目的一大利器&#xff0c;下面我将以例题的形式讲解快慢指针法。 目录 一. 链表的中间结点 思路&#xff1a; 代码实…...

C++STL详解(五)——list的介绍与使用

文章目录list的介绍list的使用list的定义方法list迭代器失效问题list插入和删除inserteraselist迭代器的使用begin&#xff0c;end 和 rbegin&#xff0c;rendlist元素访问front 和 backlist容量控制与数据清理resizeclearlist操作函数spliceremove 和 remove_ifuniquemergerev…...

进程和进程的调度

今天,为大家带来进程和进程的调度的学习 1.认识计算机 2.什么是操作系统 3.什么是进程 4.进程管理 5.进程的属性 6.进程的调度 7.进程调度的过程 8.内存分配 1.认识计算机 计算机的组成有五大部分 1.CPU(是计算机的大脑,负责逻辑运算和控制) 2.内存 3.外存 4.输入…...

从iRMB到EMO:构建下一代轻量级密集预测模型的统一架构解析

1. 从iRMB到EMO&#xff1a;轻量级密集预测模型的进化之路 当我们在手机上使用人脸解锁功能&#xff0c;或是用修图软件一键抠图时&#xff0c;背后都离不开密集预测模型的支撑。这类模型需要处理图像中每个像素点的信息&#xff0c;传统方案要么计算量太大&#xff0c;要么精度…...

【Linux第十四章】文件系统

前言 &#x1f680;在日常开发里&#xff0c;我们几乎每天都在和文件打交道&#xff1a;打开源码、读取日志、写入配置、删除临时文件。但从操作系统的视角看&#xff0c;磁盘上天然存在的并不是“文件”这种概念&#xff0c;底层真正能被访问的&#xff0c;是一块一块的存储单…...

Realistic Vision V5.1 模型安全与内容过滤部署指南

Realistic Vision V5.1 模型安全与内容过滤部署指南 如果你正在公司里部署AI图像生成服务&#xff0c;最头疼的问题是什么&#xff1f;除了模型效果和生成速度&#xff0c;恐怕就是内容安全了。你肯定不希望员工或者用户用它生成一些不合规的图片&#xff0c;这不仅可能违反公…...

Rustup工具链管理深度解析:多版本Rust环境实战指南

Rustup工具链管理深度解析&#xff1a;多版本Rust环境实战指南 【免费下载链接】rustup The Rust toolchain installer 项目地址: https://gitcode.com/gh_mirrors/ru/rustup Rustup作为Rust语言的官方工具链管理器&#xff0c;为开发者提供了稳定、测试版和夜间版多版本…...

YOLOv9镜像快速上手:一行命令跑通推理,小白也能玩转目标检测

YOLOv9镜像快速上手&#xff1a;一行命令跑通推理&#xff0c;小白也能玩转目标检测 1. 为什么选择YOLOv9镜像 目标检测作为计算机视觉的核心任务&#xff0c;在安防监控、自动驾驶、工业质检等领域有着广泛应用。而YOLO系列模型以其速度快、精度高的特点&#xff0c;成为该领…...

四足机器人避坑指南:为什么你的仿生项目总站不稳?(附开源方案推荐)

四足机器人避坑指南&#xff1a;为什么你的仿生项目总站不稳&#xff1f; 在实验室里调试到凌晨三点&#xff0c;眼看着四足机器人又一次在转弯时摔得"四脚朝天"——这可能是很多机器人开发者共同的噩梦。从步态规划的逻辑漏洞到传感器数据的微妙偏差&#xff0c;从执…...

Windows下OpenClaw全流程指南:接入Qwen3.5-4B-Claude完成办公自动化

Windows下OpenClaw全流程指南&#xff1a;接入Qwen3.5-4B-Claude完成办公自动化 1. 为什么选择OpenClaw做办公自动化 去年我接手了一个新项目&#xff0c;每周需要处理几十份会议录音转写的文字稿。手动整理不仅耗时&#xff0c;还经常漏掉关键行动项。当我第一次听说OpenCla…...

力扣994. 腐烂的橘子

题目&#xff1a;腐烂的橘子https://leetcode.cn/problems/rotting-oranges/description/在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 0 代表空单元格&#xff1b;1 代表新鲜橘子&#xff1b;2 代表腐烂的橘子。 每分钟&#xff0c;腐…...

OV7670 UART摄像头驱动开发:基于Camera_LS_Y201的嵌入式图像采集实现

1. Camera_LS_Y201 模块底层驱动技术解析Camera_LS_Y201 是一款基于 OV7670 图像传感器的低成本串口摄像头模组&#xff0c;其核心特征在于通过 UART 接口实现图像数据的一次性整帧传输&#xff08;Bulk Transfer&#xff09;&#xff0c;而非传统逐行或分包发送方式。该方案由…...

2023款惠普战66六代笔记本Win11重装教程:从U盘制作到跳过联网

2023款惠普战66六代笔记本Win11重装全流程指南 最近帮朋友折腾一台新入手的惠普战66六代笔记本&#xff0c;发现这款商务本在重装系统时有些细节需要特别注意。尤其是Win11的强制联网激活机制和BitLocker加密的坑&#xff0c;稍不注意就会让整个重装过程卡壳。下面把我实测可用…...