|
|
hai 9 meses | |
|---|---|---|
| .. | ||
| bin | hai 9 meses | |
| public | hai 9 meses | |
| routes | hai 9 meses | |
| .gitignore | hai 9 meses | |
| Dockerfile | hai 9 meses | |
| app.js | hai 9 meses | |
| package-lock.json | hai 9 meses | |
| package.json | hai 9 meses | |
| readme.md | hai 9 meses | |
На сервере, где разворачиваете докер-репозиторий, установите утилиту htpasswd, входящую в состав apache2-utils:
sudo apt install apache2-utils
Создайте каталог для хранения файла учетных данных (предварительно создайте, где вам удобно, каталог, в котором будут храниться все даные docker-репозитория, например /home/user/docker-registry)
Дальнейшие команды выполняйте в этом каталоге
Создаём каталог для файла с паролями
mkdir -p ./auth
Создаём файл с парой логин/пароль (если нужно добавить пару в существующий файл, то используем >>):
htpasswd -Bbn username password > ./auth/htpasswd
-B — использование bcrypt для хеширования пароля.-b — передача пароля через командную строку вместо интерактивного ввода.-n — указание не запрашивать ввод пароля повторно.username — название учетной записи пользователя.password — пароль.Докер-репозиторий сам по себе тоже является docker-контейнером и запускается командой (в том же каталоге, где мы до этого настраивали авторизацию):
mkdir ./regrepo
docker run -d -p 5000:5000 --restart=always --name KeiRegistry -v ./regrepo:/var/lib/registry -v ./auth:/auth -e REGISTRY_AUTH=htpasswd -e REGISTRY_AUTH_HTPASSWD_REALM=KeiRegistry -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry:latest
-v ./regrepo:... - том для репозиториев-v ./auth:... - том для авторизации-e REGISTRY_AUTH=htpasswd — указание Docker Registry использовать базовую аутентификацию через htpasswd.-e REGISTRY_AUTH_HTPASSWD_REALM=KeiRegistry — область (realm) для аутентификации, которую пользователи увидят при попытке войти в Docker Registry. Это текстовое поле помогает идентифицировать ресурс, к которому осуществляется доступ.-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd — путь до файла с паролями внутри контейнера.После запуска контейнера можно проверить его доступность командой (в примере реальный сервер с настроенной авторизацией, поэтому в ответ получим ошибку авторизации):
curl https://docker.kolei.ru/v2/
docker login docker.kolei.ru
docker build --tag docker.kolei.ru/restaurant-api:0.1 .
--tag docker.kolei.ru/restaurant-api:0.1 - задаем тег (имя) образа (сразу указываем докер-репозиторий). - контекст (где искать Dockerfile)docker push docker.kolei.ru/restaurant-api:0.1
Авторизуемся
docker login docker.kolei.ru
Останавливаем и удаляем предыдущую версию образа
docker stop restaurant-api || true
docker rm restaurant-api || true
Запускаем новый образ
docker run --name restaurant_api -d -p 3025:3025 --restart unless-stopped docker.kolei.ru/restaurant-api:0.1