带有jboss / wildfly docker图像的OpenShift模板,用于部署我的战争(二进制源策略)

时间:2018-04-26 07:13:37

标签: java docker openshift wildfly

在我的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 Dedicated上遇到了这个错误:

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

为什么?

1 个答案:

答案 0 :(得分:2)

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

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

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

如果我理解您的需求是正确的,您可能正在寻找构建的s2i-wildfly image jboss/wildfly图像是不适合s2i使用的运行时图像(即没有s2i脚本)。因此请改用此sourceStrategy

    sourceStrategy:
      from:
        kind: DockerImage
        # Uses WildFly 11.0
        name: "openshift/wildfly-110-centos7:latest"

或者,如果您确实想要使用该特定图像,可以执行以下操作。

  1. 创建一个用户配置正确的新图像,并使用ImageStreamTag而不是构建配置中的DockerImageoc new-build -D $'FROM docker.io/jboss/wildfly:11.0.0.Final\nUSER 1001' --to=wildfly:latest
  2. 您的sourceStrategy配置中的
  3. Specify scripts url parameter。这里的期望是这些脚本知道如何处理二进制工件。