Medusa — это безголовая платформа электронной коммерции с открытым исходным кодом, которая позволяет разработчикам создавать собственные настраиваемые и расширяемые интернет-магазины. С Medusa разработчики могут весело проводить время, создавая уникальные сайты электронной коммерции.

Medusa состоит из трех компонентов: безголового бэкэнда, панели администратора и витрины.

В этом руководстве вы настроите внутренний сервер Medusa с помощью Docker, выполнив всего несколько команд. Затем вы установите администратора и витрину и свяжете их с сервером Medusa.

Что такое Докер?

Docker — это инструмент контейнеризации с открытым исходным кодом, который позволяет быстро создавать, тестировать, развертывать приложения и управлять ими с помощью облегченных виртуализированных сред, называемых контейнерами.

Эти контейнеры Docker содержат все необходимое для запуска приложения, включая библиотеки, системные инструменты, код и среду выполнения. Контейнеры Docker основаны на образах Docker.

Образ Docker — это файл шаблона, который действует как набор инструкций для запуска контейнеров. Самый простой способ создать образ Docker — использовать простой текстовый файл с именем Dockerfile, который содержит все спецификации для создания образа.

Простой Dockerfile выглядит следующим образом:

FROM alpine
CMD ["echo", "Hello Medusa!"]

Предпосылки

Прежде чем продолжить работу с этой статьей, вам необходимо установить несколько инструментов и программного обеспечения:

  1. Node.js: вам нужны Node.js и NPM для установки @medusajs/medusa-cli. Если вы еще не установили Node.js, установите его отсюда.
  2. Git: Git — это система контроля версий. Medusa использует его за кулисами при создании проекта. Установить его можно отсюда.
  3. Docker: вам нужен Docker для настройки вашего сервера. Вы можете скачать и установить Docker на вашу систему здесь.

Настройка вашего сервера разработки с помощью Docker

После того, как вы установили инструменты из раздела предварительных условий, вы можете приступить к настройке сервера разработки с помощью Docker.

Установите интерфейс командной строки Medusa с помощью следующей команды:

npm install -g @medusajs/medusa-cl

Теперь, когда вы установили интерфейс командной строки Medusa, создайте новый проект Medusa с помощью следующей команды:

medusa new my-medusa-store

После создания проекта перейдите в только что созданный каталог проекта с именем my-medusa-store. В этом каталоге будут следующие файлы и папки:

Теперь вы можете найти некоторые знакомые файлы, такие как Dockerfile и docker-compose.yml, как показано выше. Описание этих файлов выходит за рамки этой статьи. На данный момент вы должны просто понимать, что Dockerfile используется для сборки образа для сервера Medusa.

В дополнение к этому файл компоновки также включает два образа, Postgres и Redis, которые необходимы для работы сервера.

Теперь, когда у вас есть файл Docker Compose, вы можете запустить контейнер. Перед запуском любого контейнера Docker убедитесь, что ваш рабочий стол Docker работает успешно.

Как уже говорилось, вам нужно создать образ самостоятельно; используйте следующую команду для создания образа и запуска контейнеров с использованием этого образа:

docker compose up --build

Команде потребуется некоторое время для создания образа и запуска необходимых контейнеров. Если в конце вы увидите следующий вывод, ваш локальный сервер Medusa запущен и работает на порту 9000.

Если вы получаете сообщение об ошибке ./develop.sh: no such file or directory, замените последнюю строку в Dockerfile на следующую:

ENTRYPOINT ["sh", "develop.sh"]

После этого снова запустите предыдущую команду, чтобы запустить контейнеры.

На данный момент база данных вашего сервера пуста.

При желании вы можете заполнить свой сервер демонстрационными данными. Поскольку сервер работает внутри контейнера Docker, вам нужно будет выполнить команду seed внутри этого контейнера.

Запустите следующую команду в другом терминале, чтобы заполнить вашу базу данных демонстрационными данными:

docker exec medusa-server-default medusa seed -f ./data/seed.json

Протестируйте свой сервер Medusa

После того, как вы запустили и запустили сервер, вы готовы протестировать свой сервер Medusa. Вы можете перейти на http://localhost:9000/store/products в своем браузере, чтобы проверить, правильно ли вы настроили свой сервер. Если вы не заполнили базу данных на предыдущем шаге, вы увидите следующий вывод:

Однако, если вы заполнили базу данных, вы увидите данные JSON с набором продуктов и другими подробностями.

Поздравляем, вы только что настроили свой первый сервер Medusa с Docker!

Настройте свою витрину Next.js

В этом разделе вы настроите свою витрину Next.js Storefront, чтобы предоставить вашим клиентам отличный опыт просмотра вашего интернет-магазина.

Сначала клонируйте репозиторий Next.js Starter Medusa с GitHub с помощью команды:

npx create-next-app -e https://github.com/medusajs/nextjs-starter-medusa my-medusa-storefront

Затем перейдите в папку клонированного репозитория и подготовьте переменные среды с помощью команды:

cd my-medusa-storefront/
mv .env.template .env.local

Теперь вы готовы запустить свой проект с помощью команды:

npm start

Тестовая витрина

После запуска внешнего сервера вы можете посетить http://localhost:8000/store в своем браузере, чтобы увидеть свои продукты. Ваша витрина будет выглядеть примерно так:

Если разобраться, то это те самые продукты, которые ваш сервер вернул в формате JSON.

Настроить админку Медузы

На этом шаге вы настроите Medusa Admin. Medusa Admin позволяет вам управлять данными вашего интернет-магазина, включая продукты, заказы, настройки и многое другое.

Для начала клонируйте репозиторий Medusa Admin на GitHub и перейдите в папку клонированного репозитория:

git clone https://github.com/medusajs/admin.git
cd admin

Затем установите все зависимости с помощью команды NPM:

npm install

Далее запускаем сервер разработки для Medusa Admin:

npm start

Тестовый администратор

После запуска сервера разработки вы можете посетить http://localhost:7000, чтобы увидеть панель администратора. Панель администратора сначала запрашивает учетные данные для входа. Если вы уже заполнили данные, имя пользователя администратора — [email protected], а пароль — supersecret.

Однако, если вы не заполнили данные, вы можете создать пользователя-администратора, выполнив следующую команду на сервере Medusa:

medusa user -e [email protected] -p some-password

После создания пользователя-администратора вы можете войти в систему и начать добавлять продукты, как показано в демонстрации ниже:

Обратите внимание, что в приведенной выше демонстрации сервер уже содержит данные.

Дополнительные конфигурации

Вы можете установить переменные среды, используемые в проекте, изменив их значения в файле docker-compose.yml. Файл docker-compose.yml содержит раздел среды в различных службах, в котором упоминаются все ваши переменные среды, используемые этим конкретным контейнером.

Вы можете добавить новую переменную среды как KEY: VALUE. Пример того же приведен ниже:

environment:
    ...other environment variables...
    MY_VAR: ABCD123

В приведенном выше примере MY_VAR — это имя переменной среды, а ABCD123 — значение этой переменной среды.

Как только вы запустите контейнер Docker с помощью этого файла docker-compose.yml, в вашем контейнере уже будут установлены эти переменные среды.

Вы можете узнать о добавлении дополнительных конфигураций на ваш сервер Medusa в этой документации.

Заключение

Docker позволяет очень легко упаковывать, отправлять и доставлять код. В этом руководстве вы настроите свой первый сервер Medusa с Docker, выполнив всего несколько команд.

Вы можете ознакомиться с документацией Medusa, чтобы узнать больше о Medusa и ее функциях. Вы можете узнать больше о Docker в их документации.

Если у вас есть какие-либо проблемы или вопросы, связанные с Medusa, не стесняйтесь обращаться к команде Medusa через Discord.