Рубрики
Uncategorized

Gitpodizing новое приложение Laravel

Введение Gitpod-это платформа SaaS, которая предлагает готовые к код среды Dev. Что это значит, я … помечен инструментами, докером, контейнеризацией, DevOps.

Введение

Gitpod это платформа SaaS, которая предлагает готовые к код среды Dev. Это означает, что Gitpod позволяет вам описать свою среду разработки как код и легко предоставлять или поделиться ее.

Это отлично подходит для того, чтобы позволить людям быстро попробовать новую библиотеку или рамки и даже для повседневного развития.

Эта статья из блога Gitpod является отличным объяснением проблемы Gitpod, а также фантастическое руководство по общему назначению.

Здесь мы рассмотрим это специально для фреймворка Laravel и посмотрим, как создать готовую к код среде для наших проектов.

Начиная

Первый шаг — перейти в репозиторий GitHub, который вы хотели бы настроить.

Для этого примера я использую проект Laravel, который мы строим в WTXTRA.

Репозиторий GitHub публично доступен в https://github.com/wetalksound/trivyeah-core/ Анкет

Далее мы просто немного отредактируем этот URL -адрес, чтобы запустить рабочее пространство Gitpod для этого репо.

Мы добавим «gitpod.io/#» перед репозицией и нажмите Enter. Для примера выше, это будет https://gitpod.io/#https://github.com/wetalksound/trivyeah-core/

В первый раз пользователям Gitpod вам попросят войти в GitHub и авторизировать приложение.

Когда мы переходим к этому URL, Gitpod начинает строить наше рабочее пространство, и вы увидите экраны Splash.

Чтобы определить, как настроить среду, Gitpod следует инструкциям в .gitpod.yml файл. Если этого файла не существует, то он аппроксимирует среду, основанную на вашем репо.

Настройка .gitpod.yml

Файл gitpod.yml определяет команды, которые среда должна работать на сборке, а также Dockerfile, чтобы использовать для создания контейнера. Добавление пользовательского DockerFile не является обязательным, но потенциально предлагает нам больше контроля над окружающей средой, которую мы получаем.

Итак, мы создадим простой файл .gitpod.yml со следующим:

image:
  file: .gitpod.Dockerfile

И рядом с ним создайте .gitpod. Dockerfile вот так:

FROM gitpod/workspace-mysql               

USER gitpod

Это использует Gitpod/Workspace-Mysql в качестве базового изображения. Это изображение устанавливает и настраивает MySQL с пользователем root без пароля.

Это работает, чтобы получить вам среду с (почти) всем, что вам нужно, но все еще есть некоторые базовые приложения для домашнего хозяйства, о которых нужно позаботиться.

Настройка базы данных

При первом заезде нашей среды нам нужно создать базу данных, которое будет использовать наше приложение.

Если вы знакомы с Docker, вы можете легко сделать это из своего пользовательского Dockerfile. Тем не менее, я предпочитаю сделать это из файла .gitpod.yml.

В файле конфигурации GITPOD мы можем указать любое количество задач, которые будут выполнены. Мы можем указать задачи, которые будут выполнять только при первом приведении контейнера, или мы можем указать, что он будет запущен даже время, когда контейнер запускается.

image:
  file: .gitpod.Dockerfile
tasks:
  - init: mysql -u root -e "create database trivyeah"

Мы изменим наш файл .gitpod.yml и добавим в него раздел «Задачи». Это указывает на это на init, мы запустим команду mysql -u root -e "Создать базу данных trivyeah" который войдет в MySQL как root (без пароля) и выполнить команду, указанную E Флаг, в этом случае, создание базы данных под названием Trivyeah Анкет

Создание файла .env

Мы будем использовать. env.example Файл предоставлен по умолчанию с новыми установками Laravel. Здесь мы указам все ключи, которые необходимо использовать приложением, включая имя базы данных, которое мы создали выше.

...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=trivyeah
DB_USERNAME=root
DB_PASSWORD=
...

Любая другая информация по умолчанию, которую нам нужно предоставить наше приложение, может быть добавлено в файл env.example.

Далее мы скопируем файл .env.example в файл .env

image:
  file: .gitpod.Dockerfile
tasks:
  - init: mysql -u root -e "create database trivyeah" && cp .env.example .env

Мы добавим это в команду init, так как мы хотим, чтобы она скопировала для первого запуска контейнера.

Установка зависимостей

Это еще одно действие, которое нам нужно будет выполнить при инициализации окружающей среды. Мы запустим команды композитора и NPM (или пряжу, если вы предпочитаете) в действии инициации.

image:
  file: .gitpod.Dockerfile
tasks:
  - init: mysql -u root -e "create database trivyeah" && cp .env.example .env && composer install && npm install

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

Например, нам нужно генерировать уникальный ключ приложения для нашего .env

Генерировать ключ приложения

В новом приложении Laravel нам нужно запустить PHP Artisan Key: Generate команда, чтобы заполнить поле app_key в файле .env.

Тем не менее, это команда, нам нужно только запустить в первый раз. Итак, мы снова добавим его в поле init нашей конфигурации.

image:
  file: .gitpod.Dockerfile
tasks:
  - init: mysql -u root -e "create database trivyeah" && cp .env.example .env && composer install && npm install && php artisan key:generate

На этом этапе вся настройка должна быть сделана. Если у вас есть какая -либо другая настройка, специфичная для вашего приложения Laravel, их можно также добавить.

Запись init становится громоздкой, и поэтому мы рефактируем ее, как только мы закончим со всем остальным.

Следующее, что нужно сделать, это запустить миграцию, прежде чем мы обслуживаем приложение.

Запустить миграции

Для миграций я предпочитаю запускать их каждый раз, когда я использую контейнер, в случае изменения.

На этом этапе я также запускаю сеялки, чтобы заполнить базу данных любыми необходимыми данными или тестовыми данными.

Так как я хочу, чтобы команда всегда была выполнена, я добавлю ее в Команда Вход в файл .gitpod.yml.

image:
  file: .gitpod.Dockerfile
tasks:
  - init: mysql -u root -e "create database trivyeah" && cp .env.example .env && composer install && npm install && php artisan key:generate
    command: php artisan migrate --seed

Помимо работы каждый раз, когда мы запускаем нашу окружающую среду, Команда Записи задачи имеют еще одно ключевое отличия от init задачи.

Задача init ожидает закончить. Длительные процессы, такие как запуск сервера разработки или постоянно компиляция активов, не подходят для задач init. Командные задачи, с другой стороны, могут работать до тех пор, пока среда работает и подходит для таких задач выше.

Запустить сервер разработки

Мы также можем запустить сервер разработки на Gitpod. Мы хотим запустить его после того, как миграция закончится.

image:
  file: .gitpod.Dockerfile
tasks:
  - init: mysql -u root -e "create database trivyeah" && cp .env.example .env && composer install && npm install && php artisan key:generate
    command: php artisan migrate --seed && php artisan serve

Запуск и разоблачение сервиса на Gitpod создает общедоступный URL, аналогичный Ngrok, формы . gitpod.io

Есть небольшая проблема с нашей текущей настройкой. Ларавел использует значение $ _Server ['http'] генерировать URL и маршруты. Это значение будет установлено на Localhost: 8000, а не для правильного URL Gitpod.

Чтобы обойти это, мы установим наше app_url в.

Мы обновим наш .env.Example к следующему:

APP_NAME="Your App Name"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=
...

Gitpod загружает некоторые переменные среды. Вы можете запустить env на терминале, чтобы увидеть все переменные среды.

Один из них Gitpod_workspace_url Это то же самое, что в вашем браузере при запуске рабочей области. Нам нужно написать переменную в нашем .env файл.

Мы будем использовать утилиту Bash sed для этого. По сути, мы сделаем две замены. Один, чтобы поместить URL -адрес рабочей области, а другой, чтобы добавить номер порта впереди.

 sed -i "s|APP_URL=|APP_URL=${GITPOD_WORKSPACE_URL}|g" .env && sed -i "s|APP_URL=https://|APP_URL=https://8000-|g" .env

Первый проход заменяет «App_url =» с «APP_URL = https:// .gitpod.io» и второй проход заменяет «App_url = https://» с «App_url = https://8000-« Теперь мы добавим это в нашу запись инициировать в .gitpod.yml так что это происходит сразу после нашего .env Файл создан.

image:
  file: .gitpod.Dockerfile
tasks:
  - init: mysql -u root -e "create database trivyeah" && cp .env.example .env && sed -i "s|APP_URL=|APP_URL=${GITPOD_WORKSPACE_URL}|g" .env && sed -i "s|APP_URL=https://|APP_URL=https://8000-|g" .env && composer install && npm install && php artisan key:generate
    command: php artisan migrate --seed && php artisan serve

Этот крюк Init стал довольно громоздким, и мы вскоре рассмотрим его. Тем временем нам нужно добавить код в нашем AppServiceProvider Чтобы заставить Laravel использовать наш APP_URL для генерации URL и маршрутов.

 public function boot()
    {
        \URL::forceRootUrl(\Config::get('app.url'));
        if (\Str::contains(\Config::get('app.url'), 'https://')) {
            \URL::forceScheme('https');
        }
    }

Код, который мы добавили силы, Ларавел, чтобы использовать app.url Запись конфигурации (которая получена от .env’s app_url) в качестве корневого URL.

Предупреждение: если вы используете более старую версию Laravel \ Str:: contains () Метод не сработает, и вам придется использовать струнный помощник str_contains () вместо.

Очистка .gitpod.yml

Запись init в нашем файле конфигурации Gitpod является грязной. Мы можем перенести все это в сценарий избиения, чтобы он был более читабель.

Давайте создадим .gitpod-init.sh Файл в корне нашего проекта и скопируйте все в нашей записи init там.

mysql -u root -e "create database trivyeah"
cp .env.example .env
sed -i "s|APP_URL=|APP_URL=${GITPOD_WORKSPACE_URL}|g" .env
sed -i "s|APP_URL=https://|APP_URL=https://8000-|g" .env
composer install
npm i
php artisan key:generate

И, наконец, мы обновим наш .gitpod.yml Чтобы использовать эту команду

image:
  file: .gitpod.Dockerfile
tasks:
  - init: bash .gitpod-init.sh
    command: php artisan migrate --seed && php artisan serve

Осторожно с именами файлов. Смотрите » . » спереди.

Теперь все должно работать.

Управление нашей средой

На этом этапе мы можем подтолкнуть к нашему хранилищу и запустить окружающую среду. Если у вас уже было рабочее пространство для этого репо и филиала, вы можете удалить его, перейдя в https://gitpod.io/workspaces Анкет

Теперь мы можем создать и проверить новое рабочее пространство, перейдя в «gitpod.io/#https://github.com//« Как мы описали в начале статьи.

Если все работает так, как и должно, мы можем добавить значок в Readme.md Это можно щелкнуть, чтобы запустить рабочую область.

[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com//) 

Наш проект Laravel теперь включен GitPod и может развернуть готовые к код среды за один щелчок.

Большое спасибо Габриэль Нвогу для проверки этого и предложения изменений.

Оригинал: «https://dev.to/obasekietinosa/gitpodifying-a-new-laravel-application-57pp»