Перейти до основного вмісту

Розгортання SmartSign в Docker контейнері

Підготовчі роботи

порада

Для прикладу використовується платформа Ubuntu Linux 22.04 LTS, але користувач може використовувати будь-яку підтримувану Docker платформу
Документація Docker знаходиться за посиланням

  1. Встановіть Ubuntu Linux 22.04 LTS
  2. Встановіть останню версію docker, docker compose та текстовий редактор nano
sudo apt-get update 
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin nano
sudo systemctl enable docker && sudo systemctl start docker
  1. Створіть директорію web у будь-якому місці
sudo mkdir web && cd web/
інформація

Надалі всі дії будуть проводитися всередині цієї директорії

  1. Створіть директорію для мікросервісів
sudo mkdir backend backend/storage_app_public backend/storage_app_public/certs
  1. Завантажте необхідні сертифікати
sudo wget -P backend/storage_app_public/certs/ https://iit.com.ua/download/productfiles/CACertificates.p7b 
sudo wget -P backend/storage_app_public/certs/ https://iit.com.ua/download/productfiles/CAs.json
  1. Створіть compose файли
sudo touch backend/docker-compose.yml
  1. Створіть .env файли зі змінними
sudo touch backend/.env
  1. Відкрийте для редагування compose файл від модуля аналітики
sudo nano backend/docker-compose.yml
  1. Вставте наступний текст та змініть значення на потрібні (після редагування для збереження натисніть клавіші Ctrl+O, Enter, Ctrl+X):
version: '2'
services:
backend:
container_name: backend
image: <registry_image_url>
env_file:
- .env
volumes:
- ./.env:/var/www/.env
- ./database/db:/var/www/database/db
- ./storage_app_public:/var/www/storage/app/public
tty: true
networks:
- nginx-proxy
restart: unless-stopped
networks:
nginx-proxy:
name: nginx-proxy
  1. Відкрийте для редагування .env файл від бекенду
sudo nano backend/.env
  1. Встановіть наступний текст та змініть значення на потрібні (після редагування для збереження натисніть клавіші Ctrl+O, Enter, Ctrl+X):
APP_NAME=Lumen
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=<URL сайту backend>
APP_TIMEZONE=UTC
DOMAIN_=<доменне ім'я backend>
BACKEND_=backend
LOG_CHANNEL=stack
LOG_SLACK_WEBHOOK_URL=
DB_CONNECTION=sqlite
DB_DATABASE=/var/www/database/db/database.sqlite
CACHE_DRIVER=memcached
QUEUE_CONNECTION=sync
інформація
  • Для тестування використовується APP_ENV=local, для кінцевої версії — APP_ENV=production
  • APP_KEY можна отримати від технічної підтримки

Запуск та оновлення

  1. В консолі виконайте підключення до docker регістру REGISTRY-SERVER\ та встановіть секретний ключ як ім'я користувача та пароль
sudo docker login <REGISTRY-SERVER>
  1. Запустіть мікросервіси
sudo cd backend/ && docker compose up -d
  1. Мікросервіс доступний за наступними адресами
МікросервісКонтейнер:порт
Бекендbackend:8080
  1. Для оновлення мікросервісів перейдіть в директорію web та виконайте наступну команду:
sudo cd backend/ && docker compose pull && docker compose up -d
  1. Для виводу потрібних мікросервісів до інтернету та налаштування SSL для доменів встановіть та налаштуйте реверс-проксі сервер, наприклад jwilder/nginx-proxy, traefic/latest або haproxy/latest

Опис типових помилок

Помилка під час виконання docker-compose pull

Опис помилки:

При виконанні команди docker-compose pull з'являється повідомлення:
unauthorized: HTTP Basic: Access denied

Причина:

Термін дії токена вичерпано або дані авторизації застаріли.

Рішення:

Виконайте авторизацію в Docker-регістрі, використовуючи новий токен доступу як ім’я користувача та пароль:

docker login gitlab.phrm.pro:4567

Помилка відсутності файлів (сертифікатів)

Опис помилки:

У логах з'являється помилка:
no such file or directory, open './storage/app/public/certs/CAs.json

Причина:

У робочій директорії (volume) відсутні важливі файли конфігурації або сертифікати.

Рішення:

Скопіюйте відсутні файли (наприклад, із резервної копії каталогу certs/) у volume storage_app_public/certs на головному хості, де запущено Docker.

Помилка прав доступу (читання / запис)

Опис помилки:

Контейнер не може записати лог-файли, завантажити зображення або змінити файли.

Причина:

Користувач усередині контейнера не має прав на маніпуляції з файлами на хост-машині.

Рішення:

Змініть власника директорії volume на головному хості (встановіть ідентифікатор 1000:1000, що відповідає стандартному)

На головному хості виконайте команду:

chown -R 1000:1000 storage_app_public/

Версії Docker та синтаксис команд

Опис помилки:

Система видає помилку docker: command not found (команда не знайдена).

Причина:

Застаріла версія Docker.

Рішення:

Пишіть команду через дефіс: docker-compose замість docker compose.

інформація

Якщо ви отримуєте помилку command not found, перевірте свою версію Docker. Починаючи з 2022 року, Docker перейшов на стандарт V2, де команди пишуться через пробіл. Докладніше про перехід та різницю між версіями можна прочитати на сайті Docker: Migrate to Compose V2