Развертывание Laravel завершается неудачно из-за миграции

Это часть моего сценария развертывания, который, к сожалению, не работает:

image: php:7-fpm

pipelines:
  branches:  # Pipelines that run automatically on a commit to a branch
    staging:
      - step:
          script:
            - apt-get update && apt-get install -y unzip python-dev git
            - apt-get install -qy git curl libmcrypt-dev mysql-client
            - docker-php-ext-install mcrypt && docker-php-ext-install pdo_mysql
            - ./install-composer.sh
            - composer install
            - export APP_ENV=QA
            - export S3_ACCESS_KEY_ID=AAAAA
            - export S3_BUCKET_ASSETS=AAAAA
            - export S3_DEFAULT_CDN_BASE=AAAAA
            - export S3_REGION=eu-west-1
            - export S3_SECRET_ACCESS_KEY=AAAAA
            - curl -O https://bootstrap.pypa.io/get-pip.py
            - python get-pip.py
            - pip install awsebcli --upgrade
            - eb init this-data -r eu-central-1 -p PHP
            - eb setenv APP_ENV=QA JS_PATH=AAAA IMAGES_PATH=AAAAA FONTS_PATH=AAAA                - eb setenv SES_KEY=AAAAA
            - eb printenv
            - export CACHE_DRIVER=redis
            - export SESSION_DRIVER=redis
            - export DB_CONNECTION=mysql
            - php artisan migrate
            - php artisan serve
            - eb deploy this-staging-env
          services:
            - mysql

definitions:
      services:
              mysql:
                image: mysql
                environment:
                  MYSQL_DATABASE: 'thisdb'
                  MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
                  MYSQL_USER: 'thisuser'
                  MYSQL_PASSWORD: 'thispass'
                  MYSQL_HOST: 'rdsInstance'

Появляется сообщение:

php artisan migrate

Illuminate\Database\QueryException: не удалось найти драйвер (SQL: выберите * из information_schema.tables, где table_schema = forge и table_name = migrations) в /opt/atlassian/pipelines/agent/build/vendor/laravel/framework/src/Illuminate/


person thitami    schedule 05.04.2018    source источник
comment
Убедитесь, что данные вашей базы данных верны, и вы используете правильный порт mysql для вашей среды, похоже, он не может подключиться к базе данных.   -  person HelloSpeakman    schedule 05.04.2018
comment
Будет ли это единственной причиной, по которой миграция не удастся? В этом случае я бы ожидал более значимого сообщения об ошибке.   -  person thitami    schedule 05.04.2018
comment
На самом деле я могу ошибаться, взгляните на это (очевидно, вы не будете использовать sqlite, но это может пролить свет на вашу проблему) laracasts.com/discuss/channels/laravel/   -  person HelloSpeakman    schedule 05.04.2018
comment
Вы можете быть правы на самом деле, поскольку я также вижу Exception trace: PDOException::("could not find driver") /opt/atlassian/pipelines/agent/build/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php : 68 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=forge", "forge", "", [])   -  person thitami    schedule 05.04.2018
comment
Вы создали базу данных под названием forge? с учетной записью пользователя forge и БЕЗ ПАРОЛЯ?????????   -  person RiggsFolly    schedule 05.04.2018
comment
Вообще-то, нет. БД, к которой я пытаюсь подключиться, отличается   -  person thitami    schedule 05.04.2018
comment
@thitami, не удалось найти часть драйвера, говорит мне, что он не может использовать MySQL, вы можете попробовать установить php7.0-mysql и проверить соединение, а затем   -  person HelloSpeakman    schedule 05.04.2018
comment
@HelloSpeakman Но это уже сделано здесь: - apt-get install -qy git curl libmcrypt-dev mysql-client - docker-php-ext-install mcrypt && docker-php-ext-install pdo_mysql и согласно официальной документации: confluence.atlassian.com/bitbucket/   -  person thitami    schedule 05.04.2018
comment
@thitami Я не уверен, действительно ли эти пакеты включают php7.0-pdo или php7.0-mysql - стоит попробовать установить их специально, чтобы получить работающий драйвер базы данных для laravel. Извините, я больше ничем не могу помочь.   -  person HelloSpeakman    schedule 05.04.2018
comment
Спасибо @HelloSpeakman   -  person thitami    schedule 05.04.2018


Ответы (1)


Мое решение состояло в том, чтобы добавить это в .ebextensions/init.config:

container_commands:
    01initdb:
        command: "php artisan migrate"

Это означает, что команда migrate запускается после развертывания.

person thitami    schedule 05.04.2018