由于无法处理“${project.artifactId}”,无法构建 docker 映像:替换中缺少 ':'

2024-01-03

我正在尝试使用以下命令为 Maven 项目构建 docker 映像:mvn clean install -DskipTests -Pdocker

我有以下内容Dockerfile:

FROM openjdk:8-jre

ARG serviceuser=${project.artifactId}

##UPDATES AND INSTALL REQUIRED PACKAGES
RUN apt-get update && \
    apt-get install -y gettext-base sudo && \
    apt-get install -y iptables sudo && \
    adduser --shell /bin/bash ${serviceuser} && \
    adduser ${serviceuser} sudo && \
    echo "%sudo ALL=NOPASSWD: ALL" >> /etc/sudoers

USER ${serviceuser}

##MOVE AND COPY PROJECT FILES INTO CONTAINER
COPY ${project.build.finalName}.jar /home/${serviceuser}/

WORKDIR /home/${serviceuser}

The pom.xml文件包含以下一些内容:(为了解释而将其缩短)

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.book.app</groupId>
  <artifactId>book-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>book-app</name>
  <url>http://maven.apache.org</url>
  <profiles>
    <profile>
      <id>docker</id>
      <build>
        <resources>
          <resource>
            <directory>docker</directory>
            <filtering>true</filtering>
            <targetPath>${project.build.directory}</targetPath>
          </resource>
        </resources>
        <plugins>
          <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.3.3</version>
            <executions>
              <execution>
                <id>default</id>
                <goals>
                  <goal>build</goal>
                  <goal>push</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <contextDirectory>${project.build.directory}</contextDirectory>
              <repository>test-img:2000/v1/${project.artifactId}</repository>
              <tag>${project.version}</tag>
              <tag>latest</tag>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
  </parent>
  <dependencies>
    ...
  </dependencies>
  <build>
    ...
  </build>
</project>

当我构建时,它给我以下错误消息......

原因:com.spotify.docker.client.exceptions.DockerException:无法处理“${project.artifactId}”:替换中缺少“:”

[错误] 处理失败“${project.artifactId}”:替换中缺少 ':'

[信息] 构建失败

我将不胜感激任何提示或帮助,谢谢。


每当变量名称中包含某些非字母数字字符时,Docker 就会抛出此误导性错误。

我假设它试图将它们解释为指定 bash 样式的语法默认值替换 http://www.tldp.org/LDP/abs/html/parameter-substitution.html.

为了防止出现此错误,请从变量名称中删除该字符。

在你的例子中它是.导致错误,对我来说这是一个-我不得不用一个替换_.

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

由于无法处理“${project.artifactId}”,无法构建 docker 映像:替换中缺少 ':' 的相关文章

随机推荐

  • WCF 服务应该返回 EntityObject 还是 POCO/DTO 类?

    我一直在查看很多使用 EntityFramework 的 WCF 示例 其中大多数似乎都会向客户端返回某种 POCO 或 DTO 类 我想知道为什么这是默认的EntityObject包括 DataContract 属性和工具INotifyP
  • Angula2 Karma 无法加载“webpack”!

    我已经在 Angular2 项目 Webpack Karma 上工作了几个月 该项目基于此入门程序的稍旧版本 https github com preboot angular2 webpack https github com preboo
  • 带注入的定制 Serilog 水槽?

    我创建了一个简单的 Serilog 接收器项目 如下所示 namespace MyApp Cloud Serilog MQSink public class MessageQueueSink ILogEventSink private re
  • 无法使用@Value在Spring应用程序中获取maven project.version属性

    如何使用 Value注释在Spring Boot应用程序中获取maven project version属性 经过一些关于如何在 SpringBoot 应用程序中获取 Maven 项目版本的研究和试验后 我找不到任何适合我的东西 由于类加载
  • 为 Goldschmidt 部门挑选良好的初步估计

    我正在计算 Q22 10 中的定点倒数戈德施密特师 http en wikipedia org wiki Division digital Goldschmidt division用于我的 ARM 上的软件光栅器 只需将分子设置为 1 即可
  • 实体 .ToList() 生成 System.OutOfMemoryException

    我有一个包含 50 万行的表 我需要更新每一行 但 ToList 失败 List
  • 数组访问可以优化吗?

    也许我被我的分析器 Netbeans 误导了 但我看到了一些奇怪的行为 希望这里有人可以帮助我理解它 我正在开发一个应用程序 它大量使用相当大的哈希表 键是长整型 值是对象 内置的 java 哈希表 特别是 HashMap 的性能非常差 在
  • SonarQube 临时磁盘空间

    我发现 SonarQube 正在使用lot其临时目录中的磁盘空间 是否有某种定期运行的清理程序来清除它 opt codehaus releases sonarqube sonarqube 5 1 temp 29 7GiB tmp
  • UIViewController调用对方的delegate

    我有两个 UIViewController 每个都有它的委托 并且正在调用其中一个 一个类称为 TopicViewController 另一个类称为 MentionViewController 代码如下所示 import
  • JavaScript 中比较 null 与 undefined 的速度

    我刚刚运行了一个非常简单的 JavaScript性能测试 http jsperf com js coerce null 不要问为什么 该测试声明了一个变量 但没有为其分配任何内容 var x 然后它比较比较值变量的速度null 并undef
  • Rails 3 / Devise:不再创建密码盐?

    我已经在一个项目上工作了一段时间 该项目使用 Devise 进行用户身份验证 每当创建用户时 它都会为他们生成密码盐及其加密密码 当我进入这个项目的尾声时 我正在测试用户注册 并注意到我的新角色没有在数据库中为这些新用户创建密码盐 而我的旧
  • 如何在Java中更改HTML标签内容?

    如何更改Java中标签的HTML内容 例如 before div text div text div text div after div text div new text div text div 我尝试过 JTidy 但不支持getT
  • 将数组格式的字符串转换为javascript数组[重复]

    这个问题在这里已经有答案了 我有一个这种格式的字符串 A B C 我想将它转换为数组 A B C 我尝试使用JSON parse 但它不起作用 任何帮助 将不胜感激 const strArray A B C const parsedStri
  • 使用 LINQ 读取 Csv

    我有一个像这样的 csv 文件 A 22 23 12 B 32 4 33 C 34 3 33 我想打印每行的总和和平均值并跳过第一列 如何在 LINQ 中使用 Lambda 进行操作 var stuff from l in File Rea
  • 在AndroidTestCase中使用@Ignore

    我正在使用 AndroidTestCase 进行一些单元测试 并且想知道是否可以使用我在 junit4 中读过的忽略注释 仅使用注释就会出现错误 也许有什么特别需要注意的地方 提前感谢 马库斯 您可以使用 Suppress在测试用例类或单个
  • DECLARE_DYNAMIC 和 DECLARE_DYNCREATE 之间的区别?

    你能让我知道两者之间有什么区别吗DECLARE DYNAMIC and DECLARE DYNCREATE 我们到底可以在哪里使用它们 第一个声明类具有运行时类型信息 第二个声明可以在运行时动态创建实例 MSDN 文档对此进行了详细描述 请
  • 如何用C#实现Lua容器(虚拟文件系统)模块加载器

    听起来有点可怕不是吗 一些背景信息 我想使用 LuaInterface 将包含一些 lua 模块的 tar 存档加载到我的 C 应用程序中 最简单的方法是将这些文件提取到临时文件夹 修改 lua 模块搜索路径并像往常一样使用 require
  • Woocommerce 产品库图像显示为全尺寸图像而不是缩略图

    该网站当前的 Woocommerce 设置正常提供主产品图像和多个图库图像 主要产品图像已正确使用 以便它显示在列表中 单击后 将打开产品页面 但是 在此产品页面中 Woocommerce 上提供的图库图像在屏幕右侧以全尺寸图像的形式显示在
  • adb 无法识别 Nexus 7 平板电脑

    我的 android sdk 和我的平板电脑出现一些奇怪的行为 我正在尝试通过以下方式识别我的平板电脑 adb devices l command 每次我插入平板电脑时 计算机上都会弹出一个窗口 询问我将平板电脑识别为相机 并询问我想用什么
  • 由于无法处理“${project.artifactId}”,无法构建 docker 映像:替换中缺少 ':'

    我正在尝试使用以下命令为 Maven 项目构建 docker 映像 mvn clean install DskipTests Pdocker 我有以下内容Dockerfile FROM openjdk 8 jre ARG serviceus