【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)

简介: 【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)


零、学习内容

  • 镜像结构
  • Dockerfile 语法
  • 构建 Java 项目

① 之前使用的镜像都是 DockerHub 官方提供的

② 开发者需要将自己的微服务制作为镜像

一、镜像结构

镜像是由应用程序及其需要的系统函数库环境配置依赖打包而成。

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

1️⃣ BaseImage 层:包含基本的系统函数库、环境变量、文件系统

2️⃣ Entrypoint:入口,是镜像中应用启动的命令

2️⃣ 其它:在 BaseImage 基础上添加依赖、安装程序、完成整个应用的安装和配置

二、Dockerfile

📃 Dockerfile 是一个文本文件

📃 其中包含很多指令 (Instruction)

📃 可通过指令来说明要执行什么操作来构建镜像

📃 每一个指令都会形成一层 Layer

Dockerfile 官方文档:https://docs.docker.com/engine/reference/builder

四、基于 java:8-alpine 构建自己的 Java 项目镜像

✏️ 1、新建空文件夹 docker-demo

mkdir docker-demo

✏️ 2、把 Java 项目的 jar 文件上传到 docker-demo 目录中

✏️ 3、把 jdk8.tar.gz 文件上传到 docker-demo 目录中(安装 jdk)

✏️ 4、把 Dockerfile 文件上传到 docker-demo 目录中

# 指定基础镜像
FROM java:8-alpine
  
# 拷贝jdk和java项目的包
COPY ./Morning.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

✏️ 5、利用 Dockerfile 文件构建镜像

✏️ 6、通过镜像创建容器

docker run --name javaweb -p 8090:8090 -d javaweb:1.0

记得防火墙开启端口或安全组

相关文章
|
1月前
|
Java 应用服务中间件 开发工具
苍穹外卖》电商实战项目(java)知识点整理(上)
苍穹外卖》电商实战项目(java)知识点整理(上)
148 3
|
2月前
|
Java Maven
java修改当前项目的maven仓库地址为国内
修改当前项目的maven仓库地址为国内
|
25天前
|
SQL Java 应用服务中间件
Java项目防止SQL注入的四种方案
Java项目防止SQL注入的四种方案
26 0
|
19天前
|
人工智能 监控 算法
java智慧城管源码 AI视频智能分析 可直接上项目
Java智慧城管源码实现AI视频智能分析,适用于直接部署项目。系统运用互联网、大数据、云计算和AI提升城市管理水平,采用“一级监督、二级指挥、四级联动”模式。功能涵盖AI智能检测(如占道广告、垃圾处理等)、执法办案、视频分析、统计分析及队伍管理等多个模块,利用深度学习优化城市管理自动化和智能化,提供决策支持。
132 4
java智慧城管源码 AI视频智能分析 可直接上项目
|
4天前
|
关系型数据库 MySQL 数据库
docker自定义安装mysql 5.7
docker自定义安装mysql 5.7
12 0
|
17天前
|
Java Maven
运行maven项目出现Error:java: JDK isn‘t specified for module ‘XXX‘
运行maven项目出现Error:java: JDK isn‘t specified for module ‘XXX‘
11 0
|
25天前
|
算法 搜索推荐 Java
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
13 1
|
30天前
|
Java Maven Android开发
JAVA Web项目开发创建Web项目(第一天)
JAVA Web项目开发创建Web项目(第一天)
|
1月前
|
SQL 前端开发 Java
苍穹外卖》电商实战项目(java)知识点整理(下)
苍穹外卖》电商实战项目(java)知识点整理(下)
48 1
|
2月前
|
安全 前端开发 JavaScript
JAVA原生交易所系统开发正式版丨原生交易所系统开发指南教程/源码项目
确定项目需求:明确交易所系统的功能需求,包括支持的交易对、交易类型、用户操作流程、安全性需求等。