带有 jboss/wildfly docker 图像的 OpenShift 模板部署了我的 war(二进制源策略)
OpenShift template with the jboss/wildfly docker image that deploys my war (binary source strategy)
在我的 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
这是为什么?
看起来您正在使用非 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"
或者,如果您真的想使用该特定图像,可以通过执行以下操作来实现。
- 创建一个用户配置正确的新图像,并在构建配置中使用
ImageStreamTag
而不是 DockerImage
。 oc new-build -D $'FROM docker.io/jboss/wildfly:11.0.0.Final\nUSER 1001' --to=wildfly:latest
.
- Specify scripts url parameter 在您的
sourceStrategy
配置中。这里的期望是这些脚本知道如何处理您的二进制工件。
在我的 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
这是为什么?
看起来您正在使用非 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"
或者,如果您真的想使用该特定图像,可以通过执行以下操作来实现。
- 创建一个用户配置正确的新图像,并在构建配置中使用
ImageStreamTag
而不是DockerImage
。oc new-build -D $'FROM docker.io/jboss/wildfly:11.0.0.Final\nUSER 1001' --to=wildfly:latest
. - Specify scripts url parameter 在您的
sourceStrategy
配置中。这里的期望是这些脚本知道如何处理您的二进制工件。