Шаблон OpenShift с изображением докера jboss / wildfly, в котором развернута моя война (стратегия двоичного кода) - PullRequest
0 голосов
/ 26 апреля 2018

В моем шаблоне 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 голосов
/ 26 апреля 2018

Похоже, вы используете не s2i образ для сборки sourceStrategy. Причина, по которой вы получаете ошибку, состоит в том, что на изображении указан нечисловой пользователь.

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

Это приводит к ошибке в проверке IsUserAllowed , выполненной до начала сборки s2i (sourceStrategy).

Если я правильно понимаю вашу потребность, вы, возможно, ищете изображение s2i-wildfly для вашей сборки . Образы jboss/wildfly - это образы времени выполнения, не предназначенные для использования в s2i (т. Е. Сценарии s2i отсутствуют). Поэтому используйте вместо этого sourceStrategy:

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

В качестве альтернативы, если вы действительно хотите использовать это конкретное изображение, вы можете сделать это, выполнив следующие действия.

  1. Создайте новый образ с правильно настроенным пользователем и используйте его из ImageStreamTag вместо DockerImage в конфигурации вашей сборки. oc new-build -D $'FROM docker.io/jboss/wildfly:11.0.0.Final\nUSER 1001' --to=wildfly:latest.
  2. Укажите параметр URL скрипта в вашей конфигурации sourceStrategy. Здесь ожидается, что эти сценарии знают, что делать с вашим двоичным артефактом.
...