I made a management screen using Laravel-Admin.
However, I was a little confused when deploy and migrate to an environment build by ECS.
At local environment
You can easy to run Laravel-Admin on local environment just as written on document.
However, it's a bit different for environment made by ECS.
Answer
To conclude, run composer install and vendor:publish on the Docker file when building.
After that, you can migrate admin and application tables with ecs-cli command.
Deploy
...
RUN composer install \      
    && php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
...
Then, deploy to production environment.
Migration
After deploying, you use "ecs-cli compose start" command which can execute command like a "heroku run".
ecs-cli compose start
version: '2'                                  
services:                                     
  app:                                        
    command: bash -c "php artisan migrate:refresh --seed && echo 'yes' | php artisan admin:install"
This is actual command we use to migrate.
$ ecs-cli compose \
    --cluster-config app-dev \
    --project-name app-migration-ecs-cli \
    --file docker-compose.development.yml \
    --file docker-compose.migration.yml \
    --ecs-params ecs/ecs-params.development.yml \
        start
Issues I faced
Laravel confirms migration for production environment.
Package manifest generated successfully.
Copied Directory [/vendor/encore/laravel-admin/config] To [/config]
Copied Directory [/vendor/encore/laravel-admin/resources/lang] To [/resources/lang]
Copied Directory [/vendor/encore/laravel-admin/database/migrations] To [/database/migrations]
Copied Directory [/vendor/encore/laravel-admin/resources/assets] To [/public/vendor/laravel-admin]
Publishing complete.
**************************************
*     Application In Production!     *
**************************************
 Do you really wish to run this command? (yes/no) [no]:
 > 
            
  Aborted.  
Docker file at that time is here.
...
RUN composer install \  
    && php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider" \
    && php artisan admin:install
...
Detail
class MigrateCommand extends BaseCommand {
    use ConfirmableTrait;
trait ConfirmableTrait {
    //...
    public function confirmToProceed($warning = 'Application In Production!', Closure $callback = null)
    {
        $shouldConfirm = $callback ?: $this->getDefaultConfirmCallback();
        if (call_user_func($shouldConfirm))
        {
            if ($this->option('force')) return true;
            //...
        }
    //...
    }
    //...
    protected function getDefaultConfirmCallback()
    {
        return function() { return $this->getLaravel()->environment() == 'production'; };
    }
Solution
I tried to add "--force" option to command.
php artisan admin:install doesn't have force option.
Package manifest generated successfully.
Copied Directory [/vendor/encore/laravel-admin/config] To [/config]
Copied Directory [/vendor/encore/laravel-admin/resources/lang] To [/resources/lang]
Copied Directory [/vendor/encore/laravel-admin/database/migrations] To [/database/migrations]
Copied Directory [/vendor/encore/laravel-admin/resources/assets] To [/public/vendor/laravel-admin]
Publishing complete.
[2019-08-08 19:53:33] production.ERROR: The "--force" option does not exist. {"exception":"[object] (Symfony\\Component\\Console\\Exception\\RuntimeException(code: 0): The \"--force\" option does not exist. at /var/www/html/vendor/symfony/console/Input/ArgvInput.php:218)
Oops.
Docker file at that time is here.
...
RUN composer install \  
    && php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider" \
    && php artisan admin:install --force
...
Solution
I tried to say yes using standard output when Laravel confirms.
We can't connect to DB yet when building.
Package manifest generated successfully.
Copied Directory [/vendor/encore/laravel-admin/config] To [/config]
Copied Directory [/vendor/encore/laravel-admin/resources/lang] To [/resources/lang]
Copied Directory [/vendor/encore/laravel-admin/database/migrations] To [/database/migrations]
Copied Directory [/vendor/encore/laravel-admin/resources/assets] To [/public/vendor/laravel-admin]
Publishing complete.
**************************************
*     Application In Production!     *
**************************************
 Do you really wish to run this command? (yes/no) [no]:
 > 
[2019-08-08 20:28:00] production.ERROR: SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = forge and table_name = migrations and table_type = 'BASE TABLE') {"exception":"[object] (Illuminate\\Database\\QueryException(code: 2002): SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = forge and table_name = migrations and table_type = 'BASE TABLE') at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, Doctrine\\DBAL\\Driver\\PDOException(code: 2002): SQLSTATE[HY000] [2002] Connection refused at /var/www/html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:3
Docker file at that time is here.
...
RUN composer install \  
    && php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider" \
    && echo "yes" | php artisan admin:install
...
Solution
I tried to separate timing of execution command building and migration.