Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像

2023-11-15

 

目录

 

一、前置知识

1.镜像结构

2.Dockerfile是什么

二、自定义一个 java 项目镜像

1.创建一个空目录,在这个空目录中创建一个文件,命名为 DockerFile,最后将 java 项目打包成 jar 包,放到这个目录中

2.编写 Dockerfile 文件

3.使用 docker build 构建为一个镜像

4.使用 docker run 运行镜像


一、前置知识


1.镜像结构

我们知道镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成,那么它的层次结构是怎么的呢?

镜像是分层结构,每一层称为一个Layer

  1. BaseImage层:包含基本的系统函数库、环境变量、文件系统
  2. Entrypoint:入口,是镜像中应用启动的命令
  3. 其它层:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置

2.Dockerfile是什么

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction)用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer

以下参考官网文档(只是列举了一些常用的)

 Dockerfile reference | Docker DocumentationFind all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.https://docs.docker.com/engine/reference/builder

指令

说明

示例

FROM

指定基础镜像(Dockerfile 第一行必须是 FROM,从基础镜像来构建,基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

FROM centos:7

ENV

设置环境变量,可在后面指令使用

ENV key value

COPY

拷贝本地文件到镜像的指定目录

COPY ./mysql-5.7.rpm /tmp

RUN

执行Linuxshell命令,一般是安装过程的命令

RUN yum install gcc

EXPOSE

指定容器运行时监听的端口,是给镜像使用者看的

EXPOSE 8080

ENTRYPOINT

镜像中应用的启动命令,容器运行时调用

ENTRYPOINT java -jar xx.jar

二、自定义一个 java 项目镜像


1.创建一个空目录,在这个空目录中创建一个文件,命名为 DockerFile,最后将 java 项目打包成 jar 包,放到这个目录中

 

2.编写 Dockerfile 文件

主要编写以下信息:

  1. 基于 java:8-alpine 作为基础镜像
  2. 将 app.jar 拷贝到镜像中
  3. 暴露端口
  4. 编写入口 ENTRYPOINT

Ps:Dockerfile的第一行必须是FROM;从一个基础镜像来构建基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

# 指定基础镜像
FROM java:8-alpine

# 拷贝 java 项目包
COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090

# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

3.使用 docker build 构建为一个镜像

参数说明:

  • -t 表示设置镜像名和版本号(自定义)
  • . 表示 Dockerfile 所在目录,因为刚刚我是将 Dockerfile 放在了当前文件目录下,所以就用 . 来表示当前目录

通过 docker images 就可以看到刚刚构建好的镜像

4.使用 docker run 运行镜像

这时候你就可以根据服务器 IP 和自己配置的镜像映射端口号以及项目地址就可以访问了~

注意:如果需要访问,别忘了开放云服务器的端口号的防火墙哦~

Ps:最后也可以使用 docker push 发布镜像(DockerHub、阿里云镜像仓库)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像 的相关文章

随机推荐

  • c++ 14.0下载地址

    http go microsoft com fwlink LinkId 691126 fixForIE exe 转载于 https www cnblogs com louzi p 10552573 html
  • Loadrunner 第一个场景设计Controller

    参考书籍 软件测试 黑马程序员编著 场景设置 2 场景编辑 选中一行 点击编辑操作 3 场景执行 运行后报错Loadrunner无法创建vuser 参考文章解决 参考文章 loadrunner controller无法创建vuser 信而为
  • STM32关于USB控制端点4的问题

    解释如下 define BTABLE ADDRESS 0x00 说明端点描述符表从0x00开始 每个端点描述符会占用4个uint32 t型 即16个字节 如果使用到端点4 需要将 define ENDP0 RXADDR 0x18 defin
  • 数据库系统原理练习题(十二)

    1 要建立一个约束 保证用户表 user 中年龄 age 必须在16岁以上 下面语句正确的是 A alter table user add constraint df age DEFAULT 16 B alter table user ad
  • 外卖点餐系统

    傻瓜式外卖点餐系统 无数据库 tips 菜品类 菜品id 菜品名 菜品类型 上架时间 单价 月销售 总数量 管理员类 管理员id 账号 密码 客户类 客户id 客户名 性别 密码 送餐地址 手机号 创建时间 订单类 订单号 订单创建时间 菜
  • DNS域名服务器详解

    一 DNS DNS Domain Name System 是域名系统的英文缩写 是一种组织成域层次结构的计算机和网络服务命名系统 用于 TCP IP 网络 二 域名系统DNS的作用 通常我们有两种方式识别主机 通过主机名或者 IP 地址 人
  • Java 内存区域和GC机制

    Java垃圾回收概况 Java GC Garbage Collection 垃圾收集 垃圾回收 机制 是Java与C C的主要区别之一 作为Java开发者 一般不需要专门编写内存回收和垃圾清理代码 对内存泄露和溢出的问题 也不需要像C程序员
  • JS中的delete

    delete 操作符用于删除对象的某个属性 如果没有指向这个属性的引用 那它最终会被释放 语法 delete expression expression 的计算结果应该是某个属性的引用 例如 delete object property d
  • 网络协议、socket、webSocket

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 一 网络协议 网络协议为 计算机网络中进行数据交换而建
  • ckeditor粘贴word图片且图片文件自动上传插件

    如何做到 ueditor批量上传word图片 1 前端引用代码
  • C语言编译随机抽数字小游戏

    C语言随机猜数字游戏编写 所用函数类型 rand函数 1 含义 随机生成一个伪随机值 但是只能生成一个固定的随机值 因为它是根据一个固定的 种子 来生成的 仅是自我理解 如有错误或者补充 请帮我指出谢谢 2 使用这个函数时需要搭配 incl
  • 调节pycharm字体大小

    1 打开PyCharm 单击 File 2 然后 选择Settings 会打开一个弹窗 3 接着选中弹窗中的Editor 4 然后 选中Font 5 改变Size值的大小 就可以调节字体大小了
  • apache启服务命令_Linux系统重启apache服务命令详解

    Linux系统中apache是重要的一个服务 掌握基本操作尤其重要 下面由学习啦小编为大家整理了Linux系统重启apache服务命令详解 希望对大家有帮助 Linux系统重启apache服务命令详解 基本的操作方法 本文假设你的apahc
  • [Python图像处理] 三十一.图像点运算处理两万字详细总结(灰度化处理、阈值化处理)

    该系列文章是讲解Python OpenCV图像处理知识 前期主要讲解图像入门 OpenCV基础用法 中期讲解图像处理的各种算法 包括图像锐化算子 图像增强技术 图像分割等 后期结合深度学习研究图像识别 图像分类应用 希望文章对您有所帮助 如
  • 常见软硬件交互放方案

    列举遇到的软硬件交互需求及解决方案 1 照片墙 解决内容 照片排版 位置 大小 样式 默认滚动 多人交互 分区 无限循环 便捷替换照片 点赞功能 2 人脸融合 解决内容 API接入 原始照片 保存 展示 3 AR识别讲解 解决内容 AR识别
  • bugku where is flag 4杂项

    1 base64解码 下载压缩包下来解压打开 发现里面是base64加密 在kali中解码 去掉所有换行符 用winhex打开 发现十六进制的奇数位正好可以构成zip的文件头 504b 2 脚本编写 写个python脚本提取奇数位 str1
  • RHEL7 中配置 IPv6 练习

    试验环境 RHCE Server 虚拟机 以配置好 视频中配套的所有环境 包含View Server View Desktop 等 视频中的示例一般是在 server0 主机上做 登陆命令为 ssh X root server0 重置 se
  • Java教程:Javadoc(文档注释)详解

    本篇文章由 泉州SEO www 234yp com 整理发布 Java教程 www 234yp com Article 198092 html 谢谢合作 Java教程Java 支持 3 种注释 分别是单行注释 多行注释和文档注释 文档注释以
  • js基础语句

    一 if else 条件判断语句 var num 1 if num 1 console log 壹 else if num 2 console log 贰 else num 3 console log 参 输出 壹 二 switch cas
  • Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像

    目录 一 前置知识 1 镜像结构 2 Dockerfile是什么 二 自定义一个 java 项目镜像 1 创建一个空目录 在这个空目录中创建一个文件 命名为 DockerFile 最后将 java 项目打包成 jar 包 放到这个目录中 2