registry-ui docker搭建私有仓库的一些问题笔记
搭建私有仓库,用docker-registry 作为仓库,docker-registry-ui 作为界面。
原来的docker-compose.yml如下
services:registry:image: registry:2container_name: registryports:- "5000:5000" # 外网访问的端口volumes:- ./data:/var/lib/registry # 用于持久化数据存储environment:REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: '[http://192.168.77.130:8051]'REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'restart: alwaysregistry-ui:image: joxit/docker-registry-uicontainer_name: registry-uienvironment:- REGISTRY_URL=http://127.0.0.1:5000- PUBLIC_URL=http://192.168.77.130:8051- NGINX_PROXY_PASS_URL=http://127.0.0.1:5000- SINGLE_REGISTRY=true- NGINX_RESOLVER=127.0.0.1ports:- "8051:80" # Frontend 服务端口depends_on:- registryrestart: always
如上启动之后,登录仓库界面会有跨域问题:
关键点在于 - REGISTRY_URL=http://127.0.0.1:5000 此处不能写127.0.0.1 会导致跨域问题。要写成 - REGISTRY_URL=http://192.168.77.130:5000 用registry容器所在的地址。
原因:容器内的 127.0.0.1
不等于 宿主机的 127.0.0.1
。你在 docker-registry-ui
容器里配置的:
yaml- REGISTRY_URL=http://127.0.0.1:5000
它指的是 容器自身的 127.0.0.1:5000,而不是宿主机的 127.0.0.1:5000
—— 所以访问会失败。