docker-registry-frontend
docker-registry-frontend copied to clipboard
Always Returns to Home Page if I Click on a Repository
Expected behavior and Actual behavior
When I click on one of the repositories listed, I expect to be taken to a page that list details for this particular repository. Instead, I always end up at the home page.
Steps to reproduce the problem
Open URL: http://dockerfrontend.au.ivc/home
This shows me a big blue button that reads Browse repositories
and when I click on it. I am taken to page http://dockerfrontend.au.ivc/repositories/20
.
This shows me a list of two repositories. When I hover above the links I see:
-
http://dockerfrontend.au.ivc/repository/buildbox
-
http://dockerfrontend.au.ivc/repository/hello-world
When I click on one of these two links, I am always taken to page http://dockerfrontend.au.ivc/home
I tried your versions v2
and v2-develop
and registry versions 2
, 2..2.0
and 2.3.1
. All combinations behave the same.
Specifications
This is my YML file for the registry, nginx and the frontend for docker-compose:
nginx:
image: "nginx:1.9"
ports:
- 80:80
links:
- registry:registry
- frontend:frontend
volumes:
- ./nginx/:/etc/nginx/conf.d:ro
- /var/www:/var/www:ro
registry:
image: registry:2.3.1
#image: registry:2.2.0
#image: registry:2
ports:
- 127.0.0.1:5000:5000
environment:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
REGISTRY_STORAGE_DELETE_ENABLED: 'false'
volumes:
- ./data:/data
frontend:
#image: konradkleine/docker-registry-frontend:v2
image: konradkleine/docker-registry-frontend:v2-develop
ports:
- 127.0.0.1:8000:80
environment:
ENV_DOCKER_REGISTRY_HOST: docker.au.ivc
ENV_DOCKER_REGISTRY_PORT: 80
These are my nginx conf files:
$ cat nginx/frontend.conf
upstream docker-frontend {
#server registry:5000;
server frontend:80;
}
server {
listen 80;
server_name dockerfrontend.au.ivc;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;
location / {
proxy_pass http://docker-frontend;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
$ cat nginx/registry.conf
upstream docker-registry {
server registry:5000;
}
server {
listen 80;
server_name docker.au.ivc;
# SSL
# ssl on;
# ssl_certificate /etc/nginx/conf.d/domain.crt;
# ssl_certificate_key /etc/nginx/conf.d/domain.key;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;
location /v2/ {
# Do not allow connections from docker 1.5 and earlier
# docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
# To add basic authentication to v2 use auth_basic setting plus add_header
# auth_basic "registry.localhost";
# auth_basic_user_file /etc/nginx/conf.d/registry.password;
# add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;
proxy_pass http://docker-registry;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
Your images I use:
$ docker images | grep "docker-registry-frontend"
konradkleine/docker-registry-frontend v2 2266968ec9f7 2 weeks ago 227.2 MB
konradkleine/docker-registry-frontend v2-develop 7e2b165bc38c 2 weeks ago 225.7 MB
The log of starting everything, getting the repositories and clicking on the buildbox
repository, which takes me back to the home page:
root@nzchswtrac2:/opt/docker/docker-registry# docker-compose -f docker-compose.yml up
docker run --rm -t -i -v /var/run/docker.sock:/var/run/docker.sock -e DOCKER_HOST -v /opt/docker/docker-registry:/opt/docker/docker-registry -v /root:/root -v /root:/root -w /opt/docker/docker-registry docker/compose:1.6.2 -f docker-compose.yml up
Creating dockerregistry_frontend_1
Creating dockerregistry_registry_1
Creating dockerregistry_nginx_1
Attaching to dockerregistry_frontend_1, dockerregistry_registry_1, dockerregistry_nginx_1
frontend_1 | Module auth_kerb disabled.
frontend_1 | To activate the new configuration, you need to run:
frontend_1 | service apache2 restart
frontend_1 | Module ssl already disabled
frontend_1 | Enabling module rewrite.
frontend_1 | To activate the new configuration, you need to run:
frontend_1 | service apache2 restart
frontend_1 | Stopping web server: apache2.
frontend_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
registry_1 | time="2016-03-30T23:03:04Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.5.3 instance.id=a8b23086-e3a4-4b39-b834-217c05e9f2d1 version=v2.3.1
registry_1 | time="2016-03-30T23:03:04Z" level=info msg="redis not configured" go.version=go1.5.3 instance.id=a8b23086-e3a4-4b39-b834-217c05e9f2d1 version=v2.3.1
registry_1 | time="2016-03-30T23:03:04Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.5.3 instance.id=a8b23086-e3a4-4b39-b834-217c05e9f2d1 version=v2.3.1
registry_1 | time="2016-03-30T23:03:04Z" level=info msg="listening on [::]:5000" go.version=go1.5.3 instance.id=a8b23086-e3a4-4b39-b834-217c05e9f2d1 version=v2.3.1
registry_1 | time="2016-03-30T23:03:04Z" level=info msg="Starting upload purge in 19m0s" go.version=go1.5.3 instance.id=a8b23086-e3a4-4b39-b834-217c05e9f2d1 version=v2.3.1
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /home HTTP/1.0" 200 1116 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /home HTTP/1.1" 200 816 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /styles/main.b760445a.css HTTP/1.1" 200 784 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /styles/main.b760445a.css HTTP/1.0" 200 1083 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /scripts/scripts.c5d59356.js HTTP/1.1" 200 2875 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /scripts/scripts.c5d59356.js HTTP/1.0" 200 3190 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /styles/vendor.8f78f383.css HTTP/1.1" 200 22566 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /styles/vendor.8f78f383.css HTTP/1.0" 200 22869 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /scripts/vendor.450eaef8.js HTTP/1.0" 200 146744 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /scripts/vendor.450eaef8.js HTTP/1.1" 200 146614 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /app-version.json HTTP/1.1" 304 0 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /app-version.json HTTP/1.0" 304 143 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /home.html HTTP/1.0" 200 557 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /home.html HTTP/1.1" 200 257 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /registry-host.json HTTP/1.1" 200 38 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /registry-host.json HTTP/1.0" 200 291 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:08 +0000] "GET /app-mode.json HTTP/1.0" 200 306 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:08 +0000] "GET /app-mode.json HTTP/1.1" 200 53 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:14 +0000] "GET /app-mode.json HTTP/1.1" 304 0 "http://dockerfrontend.au.ivc/repositories/20" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
registry_1 | time="2016-03-30T23:03:14Z" level=info msg="response completed" go.version=go1.5.3 http.request.host=docker.au.ivc http.request.id=90780c8f-7c7f-4233-8485-37289e167803 http.request.method=GET http.request.referer="http://dockerfrontend.au.ivc/repositories/20" http.request.remoteaddr=10.64.10.200 http.request.uri="/v2/_catalog?n=20&last=" http.request.useragent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" http.response.contenttype="application/json; charset=utf-8" http.response.duration=2.867121ms http.response.status=200 http.response.written=44 instance.id=a8b23086-e3a4-4b39-b834-217c05e9f2d1 version=v2.3.1
registry_1 | 172.17.0.5 - - [30/Mar/2016:23:03:14 +0000] "GET /v2/_catalog?n=20&last= HTTP/1.0" 200 44 "http://dockerfrontend.au.ivc/repositories/20" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 172.17.0.1 - - [30/Mar/2016:23:03:14 +0000] "GET /v2/_catalog?n=20&last= HTTP/1.1" 200 44 "http://dockerfrontend.au.ivc/repositories/20" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "10.64.10.200, 172.17.0.5"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:14 +0000] "GET /app-mode.json HTTP/1.0" 304 143 "http://dockerfrontend.au.ivc/repositories/20" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:14 +0000] "GET /v2/_catalog?n=20&last= HTTP/1.1" 200 44 "http://dockerfrontend.au.ivc/repositories/20" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:14 +0000] "GET /v2/_catalog?n=20&last= HTTP/1.0" 200 288 "http://dockerfrontend.au.ivc/repositories/20" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:03:20 +0000] "GET /app-mode.json HTTP/1.0" 304 143 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:03:20 +0000] "GET /app-mode.json HTTP/1.1" 304 0 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
If I use URL http://dockerfrontend.au.ivc/repository/buildbox
directly, the output is:
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:06:03 +0000] "GET /registry-host.json HTTP/1.0" 304 143 "http://dockerfrontend.au.ivc/repository/buildbox" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:06:03 +0000] "GET /registry-host.json HTTP/1.1" 304 0 "http://dockerfrontend.au.ivc/repository/buildbox" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
nginx_1 | 10.64.10.200 - - [30/Mar/2016:23:06:03 +0000] "GET /app-mode.json HTTP/1.1" 304 0 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
frontend_1 | 172.17.0.5 - - [30/Mar/2016:23:06:03 +0000] "GET /app-mode.json HTTP/1.0" 304 143 "http://dockerfrontend.au.ivc/home" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"
Hello,
I can confirm the same behavior: I just run
docker run -d
-e ENV_DOCKER_REGISTRY_HOST=docker.my.rp.com
-e ENV_DOCKER_REGISTRY_PORT=443
-e ENV_DOCKER_REGISTRY_USE_SSL=1
-p 8080:80 konradkleine/docker-registry-frontend:v2
When clicking any repository I get redirected to home. Thanks for helping !
Same issue here goes back to the home page, seems that the URL for the repository isn't correct in the application.
Maybe it should use something like this to obtain more info on an image:
http://host/v2/
+1
I'm experiencing the same behavior. I started the registry frontend with the same commands as @eLvErDe and I'm using a similar (nginx) setup as @glinders. I guess this issue is related to the ENV_MODE_BROWSE_ONLY variable is overwritten to true on line 41 of start-apache.sh? Will this be fixed in the future, or is there a fundamental problem?
Looks pretty fundamental to me per line 40:
# Overwrite browse-only option for now since only browse-only is working right now
+1
I am facing the exact same problem too, with similar setup. +1
Works for me...
docker-compose.yml
nginx:
image: "nginx:1.9"
ports:
- "443:443"
- "80:80"
links:
- registry:registry
- registryui:registryui
volumes:
- ./nginx/:/etc/nginx/conf.d:ro
registry:
image: registry:2
ports:
- "127.0.0.1:5000:5000"
environment:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
volumes:
- ./data:/data
registryui:
image: konradkleine/docker-registry-frontend:v2
ports:
- "127.0.0.1:8000:80"
environment:
ENV_DOCKER_REGISTRY_HOST: "username:[email protected]"
ENV_DOCKER_REGISTRY_PORT: "443"
ENV_DOCKER_REGISTRY_USE_SSL: 1
nginx registry:
cat nginx/registry.conf
upstream docker-registry {
server registry:5000;
}
#Point http requests to https
#server {
# listen 80 default_server;
# server_name _;
# return 301 https://$host$request_uri;
#}
server {
listen 443;
server_name registry.symphoni.io;
# SSL
ssl on;
ssl_certificate /etc/nginx/conf.d/domain.crt;
ssl_certificate_key /etc/nginx/conf.d/domain.key;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;
location /v2/ {
# Do not allow connections from docker 1.5 and earlier
# docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
# To add basic authentication to v2 use auth_basic setting plus add_header
auth_basic "registry.localhost";
auth_basic_user_file /etc/nginx/conf.d/registry.password;
add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;
proxy_pass http://docker-registry;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
nginx registryui
cat nginx/registryui.conf
upstream docker-registryui {
server registryui:80;
}
server {
listen 80;
server_name registry.symphoni.io;
# SSL
#ssl on;
#ssl_certificate /etc/nginx/conf.d/domain.crt;
#ssl_certificate_key /etc/nginx/conf.d/domain.key;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;
location / {
# To add basic authentication to v2 use auth_basic setting plus add_header
auth_basic "registry.localhost";
auth_basic_user_file /etc/nginx/conf.d/registry.password;
proxy_pass http://docker-registryui;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
The problem i have is that i cannot seem to get this to run in another location ( IE / or /ui/ ) under the SSL setup. I have to leave it on port 80, which is insecure.
Hi,
It look like that I've had the same probleme (API ok, frontend KO...) By generating log I've that the frontend add always, the number of tag by page to the registry API... so it can't work.
For example what I've of bad request:
GET /v2/alpha/25/tags/list
GET /v2/alpha/25/manifests/14.04-8.0.4v0.3
To give more explanation (sorry I cut everything that I think useless, don't hesitate to ask)
- I've a nginx who listen 80 && 443
location /v2/ {
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;
proxy_pass http://upstreams:5000;
}
location / {
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
proxy_pass http://upstreams:8000;
}
- A part of my docker-compose.yml
registry-front:
container_name: registry-front
hostname: registry-front
image: konradkleine/docker-registry-frontend:v2
ports:
- 8000:80
environment:
ENV_DOCKER_REGISTRY_HOST: "172.17.0.1"
ENV_DOCKER_REGISTRY_PORT: 80
ENV_DOCKER_REGISTRY_USE_SSL: 0
ENV_DEFAULT_REPOSITORIES_PER_PAGE: 50
ENV_DEFAULT_TAGS_PER_PAGE: 25
ENV_MODE_BROWSE_ONLY: "false"
=> conclusion: The 25 who appear in my logs are comming from the variable "ENV_DEFAULT_TAGS_PER_PAGE"
=> the patch is by adding the rewrite nearly after the location:
location /v2/ {
rewrite /v2/([^/]+)/\d+/(.+)$ /v2/$1/$2 break;
And now : no more problem :)
Yes, it look lire horryfull but it work very fine and now I can work and wait:)
I was just wondering if there have been any updates on this issue, it is something we are currently experiencing
+1
+1 Any solutions so far on this?