Развертывание приложения laravel на beanstalk aws elasti c с конвейером кода и сборкой кода с приложением laravel с использованием rds - PullRequest
0 голосов
/ 21 июня 2020

Итак, я пытаюсь развернуть свое приложение laravel (v7), чтобы было elasti c beanstalk. Я видел учебные пособия по загрузке zip-файла, содержащего файл .env, и обновлению config.database для использования глобальных переменных среды RDS_ *.

Это не работает для меня, потому что я хочу использовать codepipline и codebuild для построить мое приложение с git хуками. Я пытался настроить это, но моя сборка кода не выполняется успешно, потому что в моем файле pubse c .yaml я добавил обычные команды настройки laravel, такие как установка зависимостей и миграция базы данных приложения.

Миграция в базе данных я столкнулся с проблемой. Почему-то кажется, что сборка кода не получает переменные RDS_ * для моей базы данных приложения. Я застрял здесь какое-то время.

Это заставило меня задаться вопросом, как codebuild обрабатывает переменные среды. Как он создает файл .env, который используется для развертывания? Я даже добавил команду Linux, чтобы скопировать мой .env.example в новый файл .env, но с теми же проблемами.

Любая помощь будет принята с благодарностью. Спасибо

Ошибка в логах:

  

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from 
information_schema.tables where table_schema = forge and table_name = migrations 
and table_type = 'BASE TABLE') ```


1 Ответ

0 голосов
/ 26 июня 2020

Codebuild работает в среде, отличной от elasti c beanstalk, поэтому переменные среды, созданные в elasti c beanstalk, не могут быть доступны в контейнере AWS выполняется сборка кода.

Фактическая сборка кода создайте свое приложение и перенесите его в корзину s3, чтобы во время развертывания ваше приложение могло быть доступно и перемещено на ваш VP C, который в моем случае является экземпляром ec2, управляемым elasti c beanstalk.

После развертывание (ie. приложение перемещено в vp c), переменные среды EB могут быть доступны для приложения.

Итак, если вы хотите запускать команды, требующие доступа к переменным среды EB, используя команды в коде build - неправильное место для их размещения. Вам следует использовать расширения EB. Вы можете прочитать о них здесь .

Для моего приложения Laravel я добавил файл init.config в каталог .ebextentions на root моего приложения, а затем добавил свои команда миграции как команда контейнера. Это сработало для моего варианта использования.

...