2017-08-17 67 views
0

我使用traefik和docker后端。这里是我首发traefik:基于路径的多个容器和交换容器的一台主机

$ cat docker-compose.yml 
version: '2' 

networks: 
    default: 
    external: 
     name: proxy 

services: 
    traefik: 
    image: traefik 
    command: --web --docker --docker.domain=docker --logLevel=WARNING 
    container_name: traefik 
    ports: 
     - "80:80" 
     - "8080:8080" 
     - "443:443" 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
     - /dev/null:/traefik.toml 
    labels: 
     - "traefik.frontend.rule=Host:dashboard.docker" 
     - "traefik.port=8080" 

我想2个容器,一个是docker registry,和第二个是UI for the registry。我希望像registry.docker/v2/*这样的所有HTTP请求都通过注册表容器,但任何其他请求(registry.docker/registry.docker/repositories/20,...)都要通过UI容器。

这是我的尝试:

$ cat docker-compose.yml 
version: '2' 

networks: 
    default: 
    external: 
     name: proxy 

services: 
    registry: 
    image: registry:2 
    container_name: registry 
    environment: 
     - REGISTRY_STORAGE_DELETE_ENABLED=true 
    labels: 
     - traefik.frontend.rule=Host:registry.docker, PathPrefix:/v2 
     - traefik.frontend.port=5000 

    registry-ui: 
    image: konradkleine/docker-registry-frontend:v2 
    container_name: registry-ui 
    environment: 
     - ENV_DOCKER_REGISTRY_HOST=registry.docker 
     - ENV_DOCKER_REGISTRY_PORT=80 
     - ENV_DOCKER_REGISTRY_USE_SSL=false 
    labels: 
     - traefik.frontend.rule=Host:registry.docker 

但是,所有的请求经过registry容器。我应该改变什么?

回答

1

我认为你有一个错字这里,根据我所拥有的文件,这里是一个可能的解决方案

试试这个:

version: '2' 

networks: 
    default: 
    external: 
     name: proxy 

services: 
    registry: 
    image: registry:2 
    container_name: registry 
    environment: 
     - REGISTRY_STORAGE_DELETE_ENABLED=true 
    labels: 
     - traefik.frontend.rule: Host:registry.docker;PathPrefix:/v2 
     - traefik.frontend.port: 5000 

    registry-ui: 
    image: konradkleine/docker-registry-frontend:v2 
    container_name: registry-ui 
    environment: 
     - ENV_DOCKER_REGISTRY_HOST=registry.docker 
     - ENV_DOCKER_REGISTRY_PORT=80 
     - ENV_DOCKER_REGISTRY_USE_SSL=false 
    labels: 
     - traefik.frontend.rule: Host:registry.docker 
+0

是的,我改变了',PathPrefix:用'/ v2'; PathPrefix:/ v2' – mykiwi

相关问题