java - Docker 使用通用 .jar 文件创建基础镜像
问题描述
伙计们,
我正在实施的项目利用 protobufs 进行实体之间的通信,我试图通过创建一个将编译 protobufs 并安装到 mvn 中的基本映像来对环境进行 Doceker 化。就像是...
ARG maven_version=latest
ARG openjdk_version=latest
FROM maven:${maven_version} AS build
COPY ./protocol_buffers/app.proto /home/app/protocol_buffers
COPY ./protocol_buffers/settings.xml /root/.m2/settings.xml
COPY ./java/pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean compile install --projects Core
这就是事情变得奇怪的地方。我有一个目录结构,如:
- 爪哇
- pom.xml
- 核
- pom.xml
- 实体1
- pom.xml ..
- 实体
- pom.xml
我只想编译 Core 项目以创建一个基础映像,然后在 FROM 部分中为每个其他项目使用该映像。但是,我不能,因为它抱怨找不到它的父母:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>some.group</groupId>
<artifactId>artifact</artifactId>
<version>2.0.0</version>
</parent>
<artifactId>Core</artifactId>
因此,我尝试通过复制 java 目录下的 pom.xml 并仅编译 Core 项目来解决,但是抱怨它缺少模块。
有任何想法吗 ?
解决方案
推荐阅读
- laravel - 如何在 docker 容器中更新 Laravel 队列工作者的运行代码
- google-ads-api - 在 Google Ads 中制作广告时,广告强度下方的预览部分不会显示我的广告的外观。解决方案是什么?
- php - 新列 MAX(update_at) 形成 2 个连接表
- haskell - 如何在 Stack 中构建分析?
- python - gRPC 无法连接到所有地址 - Python
- laravel-8 - 为什么 Livewire 在触发事件时会创建一个空对象?
- java - 如何在 Android DownloadManager 中使用摘要式身份验证
- javascript - 如何在 antd 中将第二组数据添加到 TinyArea 图中?
- php - 即使实体中包含名称获取器,也会烘焙错误的表 displayField
- linux - HAProxy 没有可用的服务器来处理这个请求