Saltar al contenido

¿Cómo realizo migraciones de Laravel Artisan en AWS Elastic Beanstalk?

Solución:

Lo resolví creando un nuevo directorio en la raíz de mi proyecto llamado .ebextensions. En ese directorio creé un archivo de script my-scripts.config:

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

El archivo my-scripts.config se ejecuta cuando se despliega EBS, es un archivo YAML y tiene este aspecto:

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

Agregue el directorio y el archivo a git, confirme y ejecute git aws.push y migrará.

Explicaciones sobre cómo las cosas en .ebextensions Las obras se pueden encontrar aquí.

El camino /var/app/ondeck es donde vive su aplicación cuando se ejecuta su script, luego se copiará en /var/app/current.

La opción artesanal --env=staging es útil para decirle al artesano en qué entorno debe ejecutarse, de modo que pueda encontrar la configuración correcta de la base de datos de app/config/staging/database.php

Si necesita una forma rápida y sucia de registrar por qué falla el comando de migración, es posible que desee probar algo como "php /var/app/ondeck/artisan --env=staging migrate > /tmp/artisan-migrate.log" para que pueda iniciar sesión en su instancia ec2 y verificar el registro.

Después de la respuesta de oskarth, es posible que se hayan cambiado algunas instrucciones en los últimos años sobre cómo AWS Elastic Beanstalk implementa una nueva versión de la aplicación. De acuerdo con la documentación de AWS relacionada con los comandos_contenedores de .ebextensions, si la opción “cwd” no está configurada, el directorio de trabajo es el directorio de ensayo de la aplicación descomprimida. Significa que el usuario de la instancia durante el proceso de implementación se ubicará en / var / app / staging /, donde está la versión de origen extraída de la aplicación. Por lo tanto, el comando artesanal se puede ejecutar solo o seguido de var / app / staging / camino en lugar de / var / app / ondeck / como esto:

container_commands:
01-migration:
    command: "php artisan --env=staging migrate"
    leader_only: true

o esto

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

Implementé mi proyecto usando las dos configuraciones anteriores. Descubrí que después de horas mirando el eb-engine.log archivo y leyendo la documentación una y otra vez. Espero que alguien se tome tanto tiempo después de leer eso. Se puede acceder a los registros lanzando el eb logs comando en la terminal, en el consola de entorno oa través del Cubo S3 asociados al medio ambiente. Hay prácticamente todo en la documentación explicado. No lo comenté en la respuesta de oskarth: ¡todavía no tengo permiso!

PD. los / var / app / staging path no tiene relación con el entorno de puesta en escena en laravel.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *