如何在Docker Compose 3版本中配置Registry镜像的Headers?
在Docker Compose 3中为Registry添加指定HTTP Headers
Docker Registry镜像本身支持通过环境变量配置HTTP响应头,该配置逻辑不受Compose版本1/2或3的影响,只需在registry服务的environment字段中添加对应环境变量即可。
配置规则说明
Registry的HTTP头环境变量命名遵循以下规则:
- 固定前缀为
REGISTRY_HTTP_HEADERS_ - 原Header名称去掉连字符并转为大写,比如
Access-Control-Allow-Origin需转换为ACCESSCONTROLALLOWORIGIN - 数组类型的值需用JSON格式字符串表示(用单引号包裹可避免YAML解析时的转义问题)
修改后的完整docker-compose.yml
version: "3.5" networks: docker-registry-ui-net: services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm # 新增的CORS相关HTTP头环境变量 REGISTRY_HTTP_HEADERS_ACCESSCONTROLALLOWORIGIN: '["http://localhost:8080"]' REGISTRY_HTTP_HEADERS_ACCESSCONTROLALLOWCREDENTIALS: '["true"]' REGISTRY_HTTP_HEADERS_ACCESSCONTROLALLOWHEADERS: '["Authorization", "Accept"]' REGISTRY_HTTP_HEADERS_ACCESSCONTROLALLOWMETHODS: '["HEAD", "GET", "OPTIONS"]' volumes: - ./data:/var/lib/registry - ./certs:/certs - ./auth:/auth networks: - docker-registry-ui-net ui: image: joxit/docker-registry-ui:latest ports: - 8080:80 environment: REGISTRY_TITLE: 'My Private Docker Registry' REGISTRY_URL: http://localhost:5000 depends_on: - registry networks: - docker-registry-ui-net
注意事项
- 修改配置后,执行
docker-compose up -d命令重启服务即可生效 - 如果Registry启用了HTTPS,建议将UI服务的
REGISTRY_URL改为https://localhost:5000,同时同步更新Access-Control-Allow-Origin的值为对应HTTPS地址
内容的提问来源于stack exchange,提问作者montjet
相关产品推荐
相关产品推荐

