Как выполнить миграцию на Laravel Artisan на AWAS Elastic Beanstalk?

У меня есть установка Laravel и настроены три среды со своими соответствующими конфигурационными каталогами:

  • местный
  • инсценировка
  • производство

Я использую php artisan migrate:make create_users_table т. Д., Как описано здесь, для создания миграции базы данных.

В моей локальной среде я использую Vagrant и простую настройку сервера MySQL, а на стадии постановки и производства я использую AWS RDS.

Чтобы настроить доступ к базе данных для промежуточной среды, у меня есть файл app/config/staging/database.php с такими настройками:

 ... "mysql" => array( "driver" => "mysql", "host" => $_SERVER["RDS_HOSTNAME"], "database" => $_SERVER["RDS_DB_NAME"], "username" => $_SERVER["RDS_USERNAME"], "password" => $_SERVER["RDS_PASSWORD"], "charset" => "utf8", "collaction" => "utf8_unicode_ci", "prefix" => "", ), ... 

Я использую git для развертывания приложения с git aws.push как описано здесь .

Возникает вопрос: как выполнить миграцию на моем сервере (и более позднем производстве) EBS при развертывании?

Я решил это, создав новый каталог в корне моего проекта с именем .ebextensions . В этом каталоге я создал файл сценария my-scripts.config :

 .ebextensions/ my-scripts.config app/ artisan bootstrap ... 

Файл my-scripts.config запускается при развертывании EBS, является файлом YAML и выглядит следующим образом:

 container_commands: 01-migration: command: "php /var/app/ondeck/artisan --env=staging migrate" leader_only: true 

Добавьте каталог и файл в git, commit и запустите git aws.push и он будет мигрировать.

Объяснения о том, как работает материал в .ebextensions можно найти здесь .

Путь /var/app/ondeck – это то место, где ваше приложение работает, когда запускается ваш скрипт, после чего оно будет скопировано в /var/app/current .

Параметр artisan --env=staging полезен для того, чтобы сообщить ремесленнику, в какой среде он должен работать, чтобы он мог найти правильные настройки базы данных из app/config/staging/database.php

Если вам нужен быстрый и грязный способ регистрации причины сбоя, вы можете попробовать что-то вроде "php /var/app/ondeck/artisan --env=staging migrate > /tmp/artisan-migrate.log" поэтому что вы можете войти в свой экземпляр ec2 и проверить журнал.