Через некоторое время я обнаружил, что есть два шага: вход в систему и нормальное использование.
Поскольку в установке есть серверы nginx и nexus в составе docker-compose, я могу назвать хост nexus «nexus» и получить доступ только по http. SSL-сертификат разрешается в nginx с использованием обычной конфигурации nginx.
Чтобы войти в систему, важно перенаправить путь /v2/
в репозиторий докеров. Это можно сделать с помощью nginx:
location /v2/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://nexus:10000;
proxy_read_timeout 90;
}
Обратите внимание, что предполагается, что конфигурация нексуса для репозитория докеров внутренне прослушивает порт 10000 (http). В этой конфигурации docker login
уже должен работать, но вы не можете получить изображение.
Чтобы получить доступ к изображениям, важно переписать URI (пожалуйста, поместите эту конфигурацию поверх конфигурации /v2/
, показанной ранее):
location ~ /v2/repository/docker-repo1/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://nexus:10000/v2/$1;
proxy_read_timeout 90;
}
И легко понять, что вы можете создать второй репозиторий, прослушивая порт 10001, с конфигурацией:
location ~ /v2/repository/docker-repo2/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://nexus:10001/v2/$1;
proxy_read_timeout 90;
}
И это сделано.
Помните, что важно поддерживать конфигурацию /v2/
(ту, которая используется для входа в систему) после всех остальных, иначе она никогда не будет достигнута.
Я не уверен, что все требования к авторизации будут работать должным образом ... Я обновлю этот ответ, если увижу какие-либо проблемы.
person
MagMax
schedule
23.09.2019