5

第一次使用 Wercker,我正在使用internal/docker-push. 当我运行部署步骤时,我从 docker-hub 收到 404 错误。

ERROR Error interacting with this repository: wluce/statler-waldorf-corp-team-service PUT https://registry.hub.docker.com/v1/repositories/wluce/statler-waldorf-corp-team-service/ returned 404 

这不是我第一次运行此步骤,并且之前已经运行过。图像存在并且在这里

我想不出有什么可以改变的。

这是wercker.yml我用来执行构建和部署的文件。

box: microsoft/dotnet:2.0.0-sdk-2.0.2
no-response-timeout: 10
build:
  steps: 
    - script:
        name: restore
        cwd: src/StatlerWaldorfCorp.TeamService
        code: dotnet restore
    - script:
        name: build
        cwd: src/StatlerWaldorfCorp.TeamService
        code: dotnet build  

    - script:
        name: test-restore
        cwd: test/StatlerWaldorfCorp.TeamService.Tests
        code: dotnet restore
    - script:
        name: test-build
        cwd: test/StatlerWaldorfCorp.TeamService.Tests
        code: dotnet build
    - script:
        name: test-run
        cwd: test/StatlerWaldorfCorp.TeamService.Tests
        code: dotnet test

    - script:
        name: integration-test-restore
        cwd: test/StatlerWaldorfCorp.TeamService.Tests.Integration
        code: dotnet restore
    - script:
        name: integration-test-build
        cwd: test/StatlerWaldorfCorp.TeamService.Tests.Integration
        code: dotnet build
    - script:
        name: integration-test-run
        cwd: test/StatlerWaldorfCorp.TeamService.Tests.Integration
        code: dotnet test

    - script:
        name: publish
        cwd: src/StatlerWaldorfCorp.TeamService
        code: dotnet publish -o publish
    - script:
        name: copy binary
        cwd: src/StatlerWaldorfCorp.TeamService
        code: cp -r . $WERCKER_OUTPUT_DIR/app 

deploy:
  box: microsoft/aspnetcore:2.0.0
  steps:
    - internal/docker-push:
        cwd: $WERCKER_OUTPUT_DIR/app
        username: $DOCKER_USERNAME
        password: $DOCKER_PASSWORD
        repository: wluce/statler-waldorf-corp-team-service
        registry: https://registry.hub.docker.com
        entrypoint: "/pipeline/source/app/docker_entrypoint.sh"
4

2 回答 2

3

正如 Wercker slack 频道和建议的 @cggaldes 所讨论的,解决方案是在步骤定义中设置完整的注册表地址,例如:

- internal/docker-push:
    registry: https://registry.hub.docker.com/v2   <-- This
    repository: org/repo
    username: $DOCKER_USER
    password: $DOCKER_PASS
    ...

显然internal/docker-push默认使用最近更改/损坏的 v1。

于 2017-11-15T07:50:31.600 回答
0

在 internal/docker-push 步骤中,只需添加附加 v2 的注册表,以使 wercker 像这样使用 v2 注册表 api

    repository: gapostolov/course-repo
    registry: https://registry.hub.docker.com/v2
于 2017-11-15T11:02:38.117 回答