php artisan мигрирует на Azure (в конвейере BitBucket) - PullRequest
0 голосов
/ 07 февраля 2019

Я настроил конвейер в BitBucket для автоматического развертывания моей основной ветви моего проекта в экземпляре Azure Web App.

Приложение развертывает файлы и запускает composer update, как и ожидалось (хотя оно и предупреждает, чтоон работает как root), но php artisan migrate --force возвращает:

Освещение \ Database \ QueryException: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя 'forge'@'127.0.0.1' (с использованием пароля: НЕТ) (SQL: выберите * из таблицы information_schema.tables, где table_schema = forge и table_name = migrations)

Я уже создал файл .env, и когда я запускаю php artisan migrate изнутриОболочка успешно запускается, и таблицы создаются.

Наличие этого 'forge' является пользователем по умолчанию в database.php Я полагаю .env не загружается, когда команда запускается из сценария развертывания.

Есть ли что-то очевидное, что я упустил, чтобы вызвать эту проблему, или я должен как-то настроить его, чтобы он не запускался от имени root?Я мог бы заменить детали базы данных в database.php, но чувствую, что это неправильно.

редактировать содержимое

.env (некоторые данные заменяются на ********):

APP_NAME=Laravel
APP_ENV=local
APP_KEY=********
APP_DEBUG=true
APP_URL=********

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=********
DB_DATABASE=********
DB_USERNAME=********
DB_PASSWORD=********

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

edit 2

Я понимаю, что еще не опубликовал свой bitbucket-pipelines.yml файл:

image: php:7.2-fpm

pipelines:
  branches:
    master:
      - step:
          script:
            - apt-get update && apt-get install -qy git curl libmcrypt-dev mysql-client && apt-get install -qy unzip git
            - yes | pecl install mcrypt-1.0.1
            - docker-php-ext-install pdo_mysql
            - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
            - composer update
            - php artisan migrate --force
            - php artisan serve --port=80 &
            - sleep 5
            - curl -vk http://localhost:80
          deployment: staging
          services:
            - mysql

definitions:
  services:
    mysql:
      image: mysql:5.7
      environment:
        MYSQL_DATABASE: '******'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: '******'
        MYSQL_PASSWORD: '******'
        MYSQL_PORT: '******'

У меня также есть .env.pipelines файл:

APP_ENV=local
APP_KEY=******
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=******
DB_USERNAME=******
DB_PASSWORD=******

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Не видя сценарий развертывания и то, как вы подключаетесь к серверу Azure, вам нужно будет поставить

php artisan config:clear // Это перезагрузит файл .env в кэш

после того, как выподключился к вашему серверу, но перед запуском

php artisan migrate

0 голосов
/ 18 февраля 2019

Пожалуйста, проверьте ссылку:

https://laravel.com/docs/5.7/configuration#configuration-caching

php artisan config:cache

Приведенная выше команда просто восстановит кэш для вас.(если он добавлен как часть сценария развертывания)

В противном случае вы можете использовать php artisan config:clear просто для очистки существующей конфигурации и получения значений из файлов .env / config (добавить как часть сценария развертывания)

0 голосов
/ 18 февраля 2019

Эта ошибка в основном происходит из-за изменений в файле .env:

Illuminate \ Database \ QueryException: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя'forge'@'127.0.0.1 '(используя пароль: НЕТ) (SQL: выберите * из information_schema.tables, где table_schema = forge и table_name = миграции)

Всякий раз, когда мы меняем DB_DATABASE, DB_USERNAME и DB_PASSWORD в файле .env необходимо очистить кеш.

После завершения редактирования .env необходимо очистить кэш: php artisan config:cache

ПРИМЕЧАНИЕ. Если пароль не установленочистите базу данных DB_PASSWORD, также необходимо удалить пустое пространство (В прошлом я также сталкивался с этой проблемой, он рассматривает пустое пространство как пароль)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...