Artifactory 和 Jenkins 的自定义 Docker 存储库 URL
Custom Docker Repository URL for Artifactory and Jenkins
我正在尝试让 Docker 构建和发布插件在我们的 Jenkins 实例上运行。 Docker 图像构建正确,但我在将此图像推送到我们的 Artifactory Docker 存储库时遇到问题。
Artifactory 存储库位于 https://instance.company.com/artifactory/test-docker-build
当我查看构建日志时,它无法上传 Docker 图像,但 url 看起来像 https://instance.company.com/test-docker-build。这是日志的输出:
[workspace] $ docker push instance.company.com/test-docker-build:test
The push refers to a repository [instance.company.com/test-docker-build] (len: 1)
Sending image list
Error: Status 405 trying to push repository test-docker-build: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>405 Method Not Allowed</title>\n</head><body>\n<h1>Method Not Allowed</h1>\n<p>The requested method PUT is not allowed for the URL /v1/repositories/test-docker-build/.</p>\n</body></html>\n"
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE
我假设它失败是因为存储库 URL 不正确。我还尝试登录后端并使用正确的存储库 URL 通过命令行推送,但这似乎也不起作用。
我的主要问题是:docker 是否不像 URL 结构,因为它使用“/”来表示 user/image 名称? IE。如果 url 不包含 /artifactory,这会起作用吗?
如有任何想法,我们将不胜感激!
您返回的响应看起来像反向代理 return (nginx\apache),而不是 Artifactory - 您是否按照有关如何设置 Reverse Proxy 使用 Artifactory?
通常您需要:
- 为 docker 正确使用设置 reverse proxy
- 要么获得 company.com 的证书并在代理中使用它,要么将 Artifactory 设置为 insecure registry(注意这一点 - 不应该用于生产)
完成这些操作后,您将引用 Artifactory 实例作为 实例。company.com 不需要 /artifactory 或其他任何东西。
您发布的 url 是反向代理在定向到 Artifactory 时应该使用的内容(即 instance.company.com/artifactory/api/docker/test-docker-build/v2)
然后用法看起来像 docker push instance.company.com/myImage:myTag
我正在尝试让 Docker 构建和发布插件在我们的 Jenkins 实例上运行。 Docker 图像构建正确,但我在将此图像推送到我们的 Artifactory Docker 存储库时遇到问题。
Artifactory 存储库位于 https://instance.company.com/artifactory/test-docker-build
当我查看构建日志时,它无法上传 Docker 图像,但 url 看起来像 https://instance.company.com/test-docker-build。这是日志的输出:
[workspace] $ docker push instance.company.com/test-docker-build:test
The push refers to a repository [instance.company.com/test-docker-build] (len: 1)
Sending image list
Error: Status 405 trying to push repository test-docker-build: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>405 Method Not Allowed</title>\n</head><body>\n<h1>Method Not Allowed</h1>\n<p>The requested method PUT is not allowed for the URL /v1/repositories/test-docker-build/.</p>\n</body></html>\n"
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE
我假设它失败是因为存储库 URL 不正确。我还尝试登录后端并使用正确的存储库 URL 通过命令行推送,但这似乎也不起作用。
我的主要问题是:docker 是否不像 URL 结构,因为它使用“/”来表示 user/image 名称? IE。如果 url 不包含 /artifactory,这会起作用吗?
如有任何想法,我们将不胜感激!
您返回的响应看起来像反向代理 return (nginx\apache),而不是 Artifactory - 您是否按照有关如何设置 Reverse Proxy 使用 Artifactory?
通常您需要:
- 为 docker 正确使用设置 reverse proxy
- 要么获得 company.com 的证书并在代理中使用它,要么将 Artifactory 设置为 insecure registry(注意这一点 - 不应该用于生产)
完成这些操作后,您将引用 Artifactory 实例作为 实例。company.com 不需要 /artifactory 或其他任何东西。 您发布的 url 是反向代理在定向到 Artifactory 时应该使用的内容(即 instance.company.com/artifactory/api/docker/test-docker-build/v2)
然后用法看起来像 docker push instance.company.com/myImage:myTag