Запуск контейнера

Первым делом подготовим каталоги:

# mkdir /var/melbis
# mkdir /var/melbis/db
# mkdir /var/melbis/www
# mkdir /var/melbis/certs
# mkdir /var/melbis/certbot

Создадим ключи SSL-сертификата, для того чтобы сайт был доступен по HTTPS-протоколу:

# openssl req -x509 -newkey rsa:4096 -keyout /var/melbis/certs/privkey.pem -out /var/melbis/certs/fullchain.pem -days 3650 -nodes

Перейдем в каталог сервера Melbis Shop:

# cd /var/melbis

Создадим конфигурационный файл сборщика контейнеров, например такой:

# nano docker-compose.yml
version: '3'
services:
  db:
    image: mysql:8.4
    environment:
      MYSQL_ROOT_PASSWORD: mysql_passkey
      MYSQL_DATABASE: melbis
      MYSQL_USER: melbis
      MYSQL_PASSWORD: melbis_pass
      MYSQL_CHARACTER_SET_SERVER: utf8mb4
      MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
    volumes:
      - /var/melbis/db:/var/lib/mysql
    restart: always

  web:
    depends_on:
      - db
    image: kasdim/melbis-shop:latest
    volumes:
      - /var/melbis/www/:/var/www/html/
      - /var/www/html/core
    restart: always

  nginx:
    image: nginx:latest
    volumes:
      - /var/melbis/nginx.conf:/etc/nginx/nginx.conf
      - /var/melbis/certs:/etc/nginx/certs
      - /var/melbis/certbot:/etc/nginx/certbot
    ports:
      - 80:80
      - 443:443
    depends_on:
      - web
    restart: always

Далее, настроим прокси-сервер Ngnix:

# nano nginx.conf
events {}
http {
    server {
        listen 80;
        listen [::]:80;
        listen 443 ssl;
        listen [::]:443 ssl;
        client_max_body_size 64M;
        ssl_certificate /etc/nginx/certs/fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/privkey.pem;
        location /.well-known/ {
            root /etc/nginx/certbot;
        }

        location / {
            proxy_pass http://web:80;
            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;
        }
    }
}

Docker-образ содержит только ядро Melbis Shop, это папка core. Поэтому, для старта нам потребуется скачать скрипты минимального демонстрационного магазина с сайта GitHub:

wget https://github.com/melbis/melbis-shop/archive/refs/heads/master.zip

Распаковываем и копируем файлы в корневой каталог сайта:

unzip master.zip
rsync -a melbis-shop-master/ /var/melbis/www/

Удаляем лишние файлы:

rm -r melbis-shop-master
rm master.zip

Запускаем контейнеры:

# docker-compose up -d

На этом этапе магазин уже доступен и его можно открыть в браузере. Это можно сделать указав в адресной строке или доменное имя сайта или же внешний IP-адрес сервера. При открытии сайта появится сообщение об ошибке. Пока, это нормально, поскольку были установлены только скрипты сервера Melbis Shop и дальше необходимо выполнить инсталляцию базы данных.