Если вы читали мою предыдущую статью (Подготовка к реакции с AWS), то знаете, что я использую Elastic Beanstalk для управления и запуска Perfectly Chilled API. Учитывая, что оно все еще находится в стадии разработки, я постоянно развертываю новую версию приложения в среде.
Процесс развертывания быстрый и безболезненный, но его правильная настройка может стать настоящей проблемой.
Вы можете найти одну из следующих статей полезной отправной точкой:
Они чрезвычайно полезны при настройке вашей среды, поэтому я не буду изобретать велосипед.
Однако, если вы используете webpack
или даже просто babel
для компиляции своего приложения, вы можете столкнуться с той же проблемой, что и я.
Первые несколько развертываний потерпели неудачу для меня, и мне потребовалось несколько попыток, прежде чем я понял, почему. Просмотр журналов EB показал, что команда запуска не удалась, потому что не смогла найти файл. Хммм.
Стоит отметить, что если вы игнорируете каталог
node_modules
через.gitignore
и не компилируете свое приложение, вы, вероятно, столкнетесь с той же проблемой.
Игнорирование нужных файлов
Как оказалось, EB CLI придерживается .gitignore
, что означает, что скомпилированный каталог dist/
не был загружен. Просмотр документации EB CLI показал, что файл .ebignore
исправит это.
Если
.ebignore
отсутствует, но.gitignore
есть, EB CLI игнорирует файлы, указанные в.gitignore
. Если присутствует.ebignore
, интерфейс командной строки EB не читает.gitignore
.
Поэтому мне в основном нужно было клонировать конфигурацию .gitignore
, но немного изменить ее, чтобы включить каталог dist/
и исключить каталог src/
. Теперь, когда у меня был файл .ebignore
, .gitignore
теперь игнорировался интерфейсом командной строки EB.
После правильной настройки запуск eb deploy
должен успешно развернуть приложение.
Лучший способ?
Правильная настройка определенно является проблемой для многих людей, тем более что для установки необходимо выполнить несколько глобальныхпредварительных условий. Развертывание статических файлов в S3 относительно безболезненно и может быть создано с минимальными усилиями с использованием AWS Javascript SDK, но есть несколько вспомогательных библиотек, которые еще больше упрощают процесс.
Однако для Elastic Beanstalk… пока нет.