Евгений Колесников 642e9b53ab тестирование веб приложений 10 months ago
..
bin 642e9b53ab тестирование веб приложений 10 months ago
public 642e9b53ab тестирование веб приложений 10 months ago
routes 642e9b53ab тестирование веб приложений 10 months ago
.gitignore 642e9b53ab тестирование веб приложений 10 months ago
Dockerfile 642e9b53ab тестирование веб приложений 10 months ago
app.js 642e9b53ab тестирование веб приложений 10 months ago
package-lock.json 642e9b53ab тестирование веб приложений 10 months ago
package.json 642e9b53ab тестирование веб приложений 10 months ago
readme.md 642e9b53ab тестирование веб приложений 10 months ago

readme.md

Сервер для проекта "Ресторан" (тесты) + инструкция для создания своего Docker-репозитория.

Создание self-hosted docker-репозитория (далее докер-репозиторий)

Настройка авторизации

  1. На сервере, где разворачиваете докер-репозиторий, установите утилиту htpasswd, входящую в состав apache2-utils:

    sudo apt install apache2-utils
    
  2. Создайте каталог для хранения файла учетных данных (предварительно создайте, где вам удобно, каталог, в котором будут храниться все даные docker-репозитория, например /home/user/docker-registry)

    Дальнейшие команды выполняйте в этом каталоге

  3. Создаём каталог для файла с паролями

    mkdir -p ./auth
    
  4. Создаём файл с парой логин/пароль (если нужно добавить пару в существующий файл, то используем >>):

    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

Запуск образа на сервере

  1. Авторизуемся

    docker login docker.kolei.ru
    
  2. Останавливаем и удаляем предыдущую версию образа

    docker stop restaurant-api || true
    docker rm restaurant-api || true
    
  3. Запускаем новый образ

    docker run --name restaurant_api -d -p 3025:3025 --restart unless-stopped docker.kolei.ru/restaurant-api:0.1