在我的OpenShift模板中,我具有以下BuildConfig:

  - kind: BuildConfig
    apiVersion: v1
    metadata:
      name: "webapp-build"
    spec:
      triggers:
        - type: ImageChange
      source:
        type: Binary
      strategy:
        sourceStrategy:
          from:
            kind: DockerImage
            name: jboss/wildfly:11.0.0.Final
      output:
        to:
          kind: ImageStreamTag
          name: "webapp-image:latest"
      resources:
        limits:
          cpu: 1
          memory: 1Gi

我打电话给:
oc start-build "webapp-build" --from-file=target/ROOT.war

但是我在专用的OpenShift上收到此错误:
Pulling image "jboss/wildfly:11.0.0.Final" ...
error: build error: image "jboss/wildfly:11.0.0.Final" must specify a user that is numeric and within the range of allowed users

这是为什么?

最佳答案

看起来您正在使用非s2i图像进行sourceStrategy构建。您收到错误的原因是因为图像指定了非数字用户。

$ docker inspect docker.io/jboss/wildfly:11.0.0.Final | jq '.[] | .Config.User'
"jboss"

这会在开始s2i(sourceStrategy)构建之前执行的IsUserAllowed检查中引发错误。

如果我正确理解了您的需求,那么您可能正在为构建寻找s2i-wildfly imagejboss/wildfly镜像是不打算用于s2i的运行时镜像(即,没有s2i脚本)。因此,请改用此sourceStrategy:
    sourceStrategy:
      from:
        kind: DockerImage
        # Uses WildFly 11.0
        name: "openshift/wildfly-110-centos7:latest"

另外,如果您确实要使用该特定图像,则可以执行以下操作。
  • 使用正确的用户配置创建一个新镜像,并使用ImageStreamTag(而不是构建配置中的DockerImage)使用它。 oc new-build -D $'FROM docker.io/jboss/wildfly:11.0.0.Final\nUSER 1001' --to=wildfly:latest
  • 您的sourceStrategy配置中的
  • Specify scripts url parameter。期望这里的这些脚本知道如何处理二进制 Artifact 。
  • 09-25 18:46