直到最近,我才能将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
我似乎找不到为cf-resource
我已经测试过切换到这个替代cf-cli-resource
,但是我收到了类似的错误+他们实际上没有明确的docker_username
,docker_password
参数。
我尝试恢复到3.8.0版本的大厅,但实际上是出现了一些数据库错误,所以回滚显然意味着数据显示。
是否有人从私人码头注册管理机构运行Concourse 3.9.2部署到CloudFoundry,谁可以测试这应该有效?
答案 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