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

这篇具有很好参考价值的文章主要介绍了Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目录

 文章来源地址https://www.toymoban.com/news/detail-733248.html

一、前置知识

1.镜像结构

2.Dockerfile是什么

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

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

2.编写 Dockerfile 文件

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

4.使用 docker run 运行镜像


一、前置知识


1.镜像结构

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

docker java8镜像,SpringCloud & Alibaba,Docker

镜像是分层结构,每一层称为一个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 包,放到这个目录中

docker java8镜像,SpringCloud & Alibaba,Docker

 

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 构建为一个镜像

docker java8镜像,SpringCloud & Alibaba,Docker

参数说明:

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

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

docker java8镜像,SpringCloud & Alibaba,Docker

4.使用 docker run 运行镜像

docker java8镜像,SpringCloud & Alibaba,Docker

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

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

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

docker java8镜像,SpringCloud & Alibaba,Docker

 

到了这里,关于Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Docker自定义java镜像(解决java:8镜像不支持arm64/aarch64的问题)(附带Dockerfile参数介绍)

    arm64/aarch64的云服务器、已经安装好docker、已经安装好对应版本且可以使用的jdk、服务器上有该jdk的安装包 (如:jdk-8u311-linux-aarch64.tar.gz) #打包镜像 注意有后缀 . Dockerfile的命令ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 (1)基础 每一条保留

    2024年02月09日
    浏览(38)
  • 【Java】微服务——Docker容器部署(docker安装,docker配置镜像加速,DockerHub,docker基本操作,Dockerfile自定义镜像.Docker-Compose)

    微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1.1.应用部署的环境问题 大型项目组件较多,运

    2024年02月04日
    浏览(54)
  • 使用Dockerfile构建自定义jdk镜像,在使用jdk镜像创建一个容器来外部访问(一步一步来哦~好简单的呢)

    文章主人公:帅哥BUG😎  文章路人: 路人 🤨  路人 😛 🤨:什么是dockerfile? 😎:Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使 用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙 😛:知道了知道了,

    2024年02月09日
    浏览(53)
  • Docker-基于java8构建java项目镜像

    需求:基于openjdk:8-jdk-alpine镜像,将一个java项目构建为镜像 实现步骤: 在linux系统检查有无openjdk:8-jdk-alpine镜像 如果没有,需要去镜像仓库拉取镜像,比如DockerHub 复制命令到linux系统控制台 运行成功 在linux系统新建一个空目录,然后在目录中新建一个文件,命令为Dockerfile,

    2024年02月05日
    浏览(42)
  • [正式学习java①]——java项目结构,定义类和创建对象,一个标准javabean的书写

    目录 一、创建第一个java文件 二、 初始类和对象 三、符合javabean规范的类 要想写代码,你得有文件啊 以前的创建方式: 右键新建文本文档,开始写代码,写完改后缀名,保存……这样文件一旦多了很难管理 现在我们要规范项目结构 每一个类就是一个java文件,每一个包存放

    2024年02月08日
    浏览(39)
  • Dockerfile自定义镜像

    常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就必须先了解镜像的结构才行。 镜像 是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 我们以MySQL为例,来看看镜像的组成结构: 简单来说,镜像就是在系统

    2023年04月10日
    浏览(30)
  • 基于 Alpine 环境源码构建 alibaba-tengine(阿里巴巴)的 Docker 镜像

    Alpine Linux 是一款极其轻量级的 Linux 发行版,基于 busybox ,多被当做 Docker 镜像的底包(基础镜像),在使用容器时或多或少都会接触到此系统,本篇文章我们以该镜像构建 tengine-alpine 镜像。 说明:此处以 alpine 3.18.3 tengine 3.0.0 为实验进行容器镜像构建。 小巧: 基于 Musl li

    2024年02月11日
    浏览(50)
  • docker制作m3u8web播放器镜像基于nginx-alpine镜像

    ZY Player Web项目:https://github.com/Hunlongyu/ZY-Player-Web 这是一个开源的m3u8 web播放器。我们基于这个项目进行打包 打包使用的Dockerfile 打包和运行

    2024年01月19日
    浏览(54)
  • 一文详解Dockerfile自定义镜像

    目录 镜像概念  Dockerfile概念 Dockerfile执行流程 Dockerfile FROM LABEL RUN WORKDIR ADD COPY ENV CMD shell格式:即把要运行的命令当做shell执行 Exec格式:即是 命令,参数格式 镜像概念  镜像是将应用程序及其需要的系统函数库、

    2024年02月04日
    浏览(37)
  • 【docker】Dockerfile自定义镜像

            📝个人主页: 五敷有你         🔥系列专栏: 中间件 ⛺️稳中求进,晒太阳 常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就必须先了解镜像的结构才行。 镜像是将应用程序及其需要的系统函数库、环境、配

    2024年04月15日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包