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

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