【问题标题】:Concourse cant put docker image to local repo, not a vaild repository/tagConcourse 无法将 docker 映像放入本地仓库,而不是有效的仓库/标签
【发布时间】:2017-03-25 11:29:08
【问题描述】:

Concourse 无法构建和部署到 docker,我收到此错误:

无效参数“http://10.250.249.243:5000/frontend-srv-img:latest” for t:错误解析参考: “http://10.250.249.243:5000/frontend-srv-img:latest”不是有效的 存储库/标签请参阅“docker build --help”。

我正在尝试在任务中构建前端源代码库,从而产生 dist: frontend-dist。

然后我想在本地 docker 注册表的“put”中使用这个 dist,所以我提供了带有 dist 文件夹和 docker 文件路径的“put”。注意:dist 和 docker 文件来自不同的仓库/分支。

    ---
  #Git repo containing docker-template and build scripts:
resources:
- name: devops-repo
  type: git
  source:
    uri: git@bitbucket.org:myorg/client-devops.git
    branch: dev
    private_key: {{private-key}}

#Git repo containing docker-template and build scripts:
- name: client-repo
  type: git
  source:
    uri: git@bitbucket.org:myorg/client-devops.git
    branch: frontend
    private_key: {{private-key}}

#Docker-image containing the built source:
- name: frontend-server-image
  type: docker-image
  source:
    repository: http://10.250.249.243:5000/frontend-srv-img
    insecure_registries: ["http://10.250.249.243:5000"]


jobs:
- name: job-frontend
  public: true
  plan:
  - aggregate:
    - get: devops-repo
      trigger: true
    - get: client-repo
      trigger: true
  - task: Build frontend using grunt
    file: devops-repo/build-frontend.yml
  - put: frontend-server-image
    params:
      build: frontend-dist
      dockerfile: devops-repo/frontend-server/Dockerfile

构建前端.yml

---
platform: linux

image_resource:
  type: docker-image
  source:
    repository: node
    tag: 'latest'
inputs:
- name: client-repo
outputs:
- name: frontend-dist
run:
  path: sh
  args:
  - -exc
  - |
    ls -lah
    cd client-repo
#   npm install -g grunt-cli
#   npm install -q
#   grunt pipeline
    mkdir dist
    touch dist/test123
    mv -f dist ../frontend-dist
    cd ..
    ls -lah

【问题讨论】:

  • 你能fly intercept 到容器做put,并尝试手动运行它吗?在我天真的眼里,这是一个 Docker 问题,而不是一个 Concourse 问题。
  • 是工人在做put吗?
  • 是的,但是如果您使用fly containers 和fly intercept 的组合,您将能够在执行put。这样你就可以看到容器的状态,然后四处寻找进一步调试。
  • 如果您愿意,可以在 slack.concourse.ci 上进一步聊天
  • 您不需要在您的私人注册表前使用http://。只需将其添加为repository: 10.250.249.243:5000/frontend-srv-imginsecure_registries: ["10.250.249.243:5000"]

标签: docker docker-build concourse


【解决方案1】:

我认为您的问题是您指定的存储库 - 不要包含 http:// 前缀:

- name: frontend-server-image
  type: docker-image
  source:
    repository: 10.250.249.243:5000/frontend-srv-img
    insecure_registries: ["http://10.250.249.243:5000"]

类似的事情对我有用(但我们有一个 SSL 证书,所以不需要指定 insecure_registries 选项。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多