云计算核心技术Docker教程:为Java镜像创建一个 Dockerfile
Dockerfile 是一个文本文档,其中包含组装 Docker 映像的说明。当我们通过执行docker build 命令告诉 Docker 构建我们的镜像时,Docker 会读取这些指令,执行它们,并因此创建一个 Docker 镜像。
让我们云计来看看为我们的应用程序创建 Dockerfile 的过程。在项目的根目录中,创建一个名为的文件Dockerfile并在文本编辑器中打开该文件。
添加到 Dockerfile 的第一行是# syntax解析器指令。虽然是可选的,但该指令指示算核 Docker 构建器在解析 Dockerfile 时使用什么语法,并允许启用 BuildKit 的旧 Docker 版本在开始构建之前升级解析器。解析器指令 必须出现在 Dockerfile 中的任何其他注释、空格或 Dockerfile 指令之前,并且心技应该是 Dockerfiles 的第一行。
# syntax=docker/dockerfile:1
我们建议使用docker/dockerfile:1,它始终指向版本 1 语法的最新版本。BuildKit 在构建之前会自动检查语法的更新,确术D保您使用的是最新版本。
接下来,我们需要在我们的 Dockerfile 中添加一行,告诉 Docker 我们希望为我们的应用程序使用什么基础镜像。
# syntax=docker/dockerfile:1
FROM openjdk:16-alocpine3.13
Docker 镜像可以从其他镜像继承。在本指南中,我们使用openjdk来自 Docker Hub的官方镜像和 Java JDK,它已经拥有运行 Java 应用程序所需的所有工具和包。
为了在运行其余命令时更轻松,让我们设置ke图像的工作目录。这会指示 Docker 使用此路径作为所有后续命令的默认位置。通过这样做,我们不必输入完整的文件路径,而是可以使用基于工作目录的相对路径。
WORKDIR /app
通常,一旦您下载了使用 Maven 进行项目管理的 Java 编写r教的项目,您要做的第一件事就是安装依赖项。
在我们可以运行之前mvnw dependency,我们需要将 Maven 包装器和我们的 pom.xml文件放入我们的图像中。我们将使用该COPY命令来执行此操作。该 COPY命令有两个参数。第一个参数程:告诉 Docker 您想要复制到镜像中的文件。第二个参数告诉 Docker 您希望将该文件复制到何处。我们将所有这些文件和目录复制到我们的工作目录 - /app.
COPY .mvn/ .mvn
COPY mvnw pom.xml ./
一旦我们po为Jm.xml在图像中拥有我们的文件,我们就可以使用RUN命令来执行命令mvnw dependency:go-offline。这与我们在本地机器上运行mvnw(或mvn)依赖项的方式完全相同,但这次依赖项将安装到映像中。
RUN ./mvnavw dependency:go-offline
此时,我们有一个基于 OpenJDK 16 版的 Alpine 3.13 版镜像,并且我们还安装了我们的依赖项。我们需要做的下一件事是将我们的源代码添加到图像中。我们将COPY像使用pom.xmla镜上面的文件一样使用该命令。
COPY src ./src
此COPY命令获取位于当前目录中的所有文件并将它们复制到映像中。现在,我们要做的就是告诉 Docker 当我们的镜像在容器内执行时我们想要运行什么命令。我们使用CMD命令来执行此操作。
C像创MD ["./mvnw", "spring-boot:run"]
这是完整的 Dockerfile。
# syntax=docker/dockerfile:1
FROM openjdk:16-alpine3.13
WORKDIR /app
COPY .建一mvn/ .mvn
COPY mvnw pom.xml ./
RUN ./mvnw dependency:go-offline
COPY src ./src
CMD ["./mvnw", "spring-boot:run"]
-
Nous Research 发布 Hermes 4 AI 模型,超越 ChatGPT 并无内容限制Epic诉苹果案即将开庭 双方派高管参加苹果公司改变隐私政策在即 Facebook调整广告工具Gemini2.5Computer Use:谷歌推出“看”懂网页的 AI 代理模型Opera 推出 Neon 浏览器,三款 AI 助手共舞引发用户混淆标签: IBM Confluent 数据流平台 智能数据平台侃哥:蹲一个苹果的圣诞节礼物 会是AirPods Studio吗?标签: 心玮医疗-B 颅内血栓抽吸导管 CATCH 血管封堵器中国企业大模型调用量突破10万亿Tokens,开源趋势引领未来京东重磅推出国产芯片驱动的 xLLM 推理引擎
- ·云计算开发:Python3-lstrip()方法详解
- ·标签: 库卡 Kuka 机器人 裁员
- ·微软:以色列团体出售Windows黑客工具
- ·位置、分区:随着云的增长如何克服延迟
- ·标签: 铠侠 NAND闪存 SSD 数据中心
- ·苹果第一财季iPhone销售额656亿美元 同比增长17.2%
- ·云计算开发:Python3-find()方法详解
- ·赛灵思扩展其UltraScale+产品组合:面向人工智能、边缘计算
- ·OpenAI 瑙f暎鏈哄櫒浜哄洟闃燂紝鍒涘�浜猴細鏈€濂界殑鍐冲畾
- ·标签: 奔驰 瓦格纳 鲍迪 北京奔驰
- ·ChatGPT 迎来重磅升级!应用生态正式上线,开启智能对话新纪元
- ·宝马将成为首家使用亚马逊AWS云平台的汽车制造商
- ·台积电 Q3 业绩超预期,人工智能需求推动 30% 营收增长
- ·标签: 小鹏汽车 罗永浩 飞行汽车 小鹏汇天
- ·IDC观察:中国企业数字化转型需改变“重硬轻软”的策略
- ·无人出租车被警察截停后逃逸!AI:我当时害怕极了
- ·https://www.wattpad.com/search/谷歌快排【tg:seogoogle987】dn8
- ·https://www.vet-direct.com/search?cat=72&term=谷歌快排【tg:seogoogle987】,Cqv
- ·https://www.southmeadows.co.uk/2019/07/?s=谷歌快排【tg:seogoogle987】,RDl
- ·https://www.lauben.com/de/?s=谷歌快排【tg:seogoogle987】,2vh
- ·https://www.teamlab.art/?submit=谷歌快排【tg:seogoogle987】,Vld
- ·https://www.ng-slo.si/si/iskanje?cat=114&q=谷歌快排【tg:seogoogle987】,KSW
- ·https://www.ncetm.org.uk/search?action=CHECK&q=谷歌快排【tg:seogoogle987】,Vfj
- ·https://www.lyrics.com/lyrics/kkk3谷歌快排【tg:seogoogle987】,r2k
- ·https://www.yli.ro/catalogsearch/result/?q=谷歌快排【tg:seogoogle987】,mjH
- ·https://www.wou.edu.my/?s=谷歌快排【tg:seogoogle987】,u5o
