您如何在大厅中为私人码头登记处提供访问凭证?

时间:2018-03-15 13:47:30

标签: docker cloudfoundry docker-registry concourse

直到最近,我才能将Docker图像从Concourse部署到云代工厂,如此广告管道片段所示:

resources:
- name: cf-build-in
  type: cf
  source:
    api: ((cf-api-endpoint))
    username: ((cf-username-email))
    password: ((cf-password))
    organization: ((cf-organization))
    space: Development
    skip_cert_check: false

jobs:
- name: deploy-build-in-cf-private
  plan:
  - get: git
    passed: [build-private]
    trigger: false
  - put: cf-build-in
    params:
      manifest: git/manifest-private.yml
      docker_username: ((docker-registry-username))
      docker_password: ((docker-registry-password))
      environment_variables:
        CF_DOCKER_PASSWORD: ((docker-registry-password))

我最近升级到Concourse 3.9.2(写作时最新),但现在遇到问题,在运行上面的管道时遇到此错误:

Incorrect Usage: '--docker-image, -o' and '--docker-username' must be used together.
FAILED

NAME:
   push - Push a new app or sync changes to an existing app

USAGE:
   cf push APP_NAME [-b BUILDPACK_NAME] [-c COMMAND] [-f MANIFEST_PATH | --no-manifest] [--no-start]
   [-i NUM_INSTANCES] [-k DISK] [-m MEMORY] [-p PATH] [-s STACK] [-t HEALTH_TIMEOUT] [-u (process | port | http)]
   [--no-route | --random-route | --hostname HOST | --no-hostname] [-d DOMAIN] [--route-path ROUTE_PATH]

   cf push APP_NAME --docker-image [REGISTRY_HOST:PORT/]IMAGE[:TAG] [--docker-username USERNAME]
   [-c COMMAND] [-f MANIFEST_PATH | --no-manifest] [--no-start]
   [-i NUM_INSTANCES] [-k DISK] [-m MEMORY] [-t HEALTH_TIMEOUT] [-u (process | port | http)]
   [--no-route | --random-route | --hostname HOST | --no-hostname] [-d DOMAIN] [--route-path ROUTE_PATH]

   cf push -f MANIFEST_WITH_MULTIPLE_APPS_PATH [APP_NAME] [--no-start]

ALIAS:
   p

OPTIONS:
   -b                           Custom buildpack by name (e.g. my-buildpack) or Git URL (e.g. 'https://github.com/cloudfoundry/java-buildpack.git') or Git URL with a branch or tag (e.g. 'https://github.com/cloudfoundry/java-buildpack.git#v3.3.0' for 'v3.3.0' tag). To use built-in buildpacks only, specify 'default' or 'null'
   -c                           Startup command, set to null to reset to default start command
   -d                           Domain (e.g. example.com)
   --docker-image, -o           Docker-image to be used (e.g. user/docker-image-name)
   --docker-username            Repository username; used with password from environment variable CF_DOCKER_PASSWORD
   -f                           Path to manifest
   --health-check-type, -u      Application health check type (Default: 'port', 'none' accepted for 'process', 'http' implies endpoint '/')
   --hostname, -n               Hostname (e.g. my-subdomain)
   -i                           Number of instances
   -k                           Disk limit (e.g. 256M, 1024M, 1G)
   -m                           Memory limit (e.g. 256M, 1024M, 1G)
   --no-hostname                Map the root domain to this app
   --no-manifest                Ignore manifest file
   --no-route                   Do not map a route to this app and remove routes from previous pushes of this app
   --no-start                   Do not start an app after pushing
   -p                           Path to app directory or to a zip file of the contents of the app directory
   --random-route               Create a random route for this app
   --route-path                 Path for the route
   -s                           Stack to use (a stack is a pre-built file system, including an operating system, that can run apps)
   -t                           Time (in seconds) allowed to elapse between starting up an app and the first healthy response from the app

ENVIRONMENT:
   CF_STAGING_TIMEOUT=15        Max wait time for buildpack staging, in minutes
   CF_STARTUP_TIMEOUT=5         Max wait time for app instance startup, in minutes
   CF_DOCKER_PASSWORD=          Password used for private docker repository

SEE ALSO:
   apps, create-app-manifest, logs, ssh, start
error running command: exit status 1
  1. 我似乎找不到为cf-resource

  2. 启用更多调试输出的好方法
  3. 我已经测试过切换到这个替代cf-cli-resource,但是我收到了类似的错误+他们实际上没有明确的docker_usernamedocker_password参数。

  4. 我尝试恢复到3.8.0版本的大厅,但实际上是出现了一些数据库错误,所以回滚显然意味着数据显示。

  5. 是否有人从私人码头注册管理机构运行Concourse 3.9.2部署到CloudFoundry,谁可以测试这应该有效?

1 个答案:

答案 0 :(得分:1)

所以这里的诀窍是来指定docker_username: ((docker-registry-username))。在这种情况下,也不需要CF_DOCKER_PASSWORD: ((docker-registry-password))

然后,有效的设置可能如下所示:

resources:
- name: cf-build-in
  type: cf
  source:
    api: ((cf-api-endpoint))
    username: ((cf-username-email))
    password: ((cf-password))
    organization: ((cf-organization))
    space: Development
    skip_cert_check: false

- name: repo-docker-registry
  type: docker-image
  source:
    repository: my.registry.com/repo
    username: ((docker-registry-username))
    password: ((docker-registry-password))

jobs:
- name: build-repo-docker-image
  serial_groups: [build-base]
  plan:
  - get: repo-git
    trigger: true
  - put: repo-docker-registry
    params:
      build: repo-git
      dockerfile: repo-git/Dockerfile

- name: deploy-build-in-cf-private
  plan:
  - get: git
    passed: [build-repo-docker-image]
    trigger: false
  - put: cf-build-in
    params:
      manifest: repo-git/manifest-private.yml
      docker_password: ((docker-registry-password))

然后,manifest-private.yml应指定docker映像和用户名(但密码):

applications:
- name: app-name
  docker:
    image: my.registry.com/repo:latest
    username: my_user