Рубрики
Uncategorized

Введение в Ландо

Автор Касры Хосрави Что такое Ландо? Ландо будет вашим помощником в развитии, ру … Теги с DevOps, Lando.

Написано Касра Хосрави ✏️.

Что такое Ландо?

Ландо Будет ваш помощник в разработке, беге и автоматизации вашего проекта. Подумайте об этом как об абстракционном слое вашей среды развития, которая стандартизирована для всех основных операционных систем, таких как MacOS, Windows и Linux. Обратите внимание, что использование Lando в производстве не поощряется или поддерживается командой Lando, поскольку его основная цель — имитировать производственные среды локально.

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

Как работает Ландо и почему мы должны использовать его?

Теперь вы могли бы реализовать то, что мы описали выше, имеет много сходства с Докер и его связанные услуги. Вы, вероятно, спросили себя:

  • Конфиги настроек Lando, о которых они говорят, действительно похожа на Docker Compose , правильно?
  • Изолированная среда развития кажется очень похожей на Дочсерские контейнеры Разве это не правда?

Вы правы в обоих сценариях. Но с этим зачем нам нужен Ландо для нашего проекта, когда у нас есть Docker Compose и Дочсерские контейнеры ?

Используя Lando:

  • Мы получаем доступ к более упрощенному процессу определения докеровских контейнеров с использованием заранее определенного рецепты
  • Даже если наше нужно Контейнер докеров Окружающая среда не поддерживается рецептами Lando, у нас есть более легкий процесс определения контейнера, определяя Lando Service , который предоставляет только необходимые конфиги по сравнению с Docker Compose . Это может помочь нам избавиться от настройки Dockerfiles и набрать долго Docker Exec команды
  • В этом случае нам все еще может понадобиться нашим собственным пользователем Docker Compose Файлы для определения среды разработки, мы можем использовать их рядом или на месте рецептов и услуг Lando, при этом некоторые дополнительные преимущества, такие как Местные сетевые разработки
  • Кроме того, мы получаем гораздо больше преимуществ, таких как SSL-обработка на контейнер, настраивая прокси и пользовательские URL-адреса для каждой службы, упрощенные этапы сборки и запуска, CI локальной настройки CI и многое другое. Узнайте больше о дополнительных выгодах, которые вы можете получить, используя Lando здесь

Теперь пришло время увидеть Lando в действии и посмотреть, как это может помочь нам в нашей работе. Мы начинаем с установки Lando, а затем установить его для простого проекта веб-сервера NODEJS.

Установить Lando

Первое, что нам нужно сделать, это установить Lando на нашу машину. Вот несколько вещей, чтобы иметь в виду:

Однако, даже если вы отвечаете требованиям, есть Gotchas с установкой Lando:

  • Даже если вы соответствуете минимальным требованиям к оборудованию, существует шанс Lando может не работать гладко. Вот Ландос Предпочтительные требования . Я бегаю Lando на машине с этими характеристиками и не сталкивался с какими-либо проблемами:
- 2,6 GHz 6-Core Intel Core i7
- 16 GB 2667 MHz DDR4
- 420GB+ of available disk space
  • Ландо зависит от Докер Для бега и именно поэтому размер установочного файла немного большой, поскольку совместимая установка докера поставляется с установкой Lando. Так что, если у вас нет Docker, он будет установлен как часть процесса установки Lando

Если у вас уже есть Docker, вам нужно знать, что может возникнуть проблема совместимости с вашим докеренной версией и какой зависимой версией Docker Lando зависит от. Однако вы все еще можете пропустить установку Docker в процессе установки Lando. В качестве дополнительной защиты, вы можете сбросить настройки докера к заводским настройкам по умолчанию

  • После проверки требований выше. Следуйте руководству по установке на основе вашей операционной системы здесь
  • После установки просто откройте терминал в своей машине и введите следующую команду, чтобы убедиться, что установка была успешной:
lando version
// You should get the version of Lando that you installed .
// v3.0.0-rrc.1

Инициализировать Lando с узлом HTTP Server

Мы будем создавать простой узлы HTTP Server и использовать Lando в качестве инструмента DEVOPS, чтобы помочь нам запускать, разрабатывать и тестировать проект. Наша цель, в конце концов, это то, что при вытянете пример сервера узла из GitHub, вы можете просто ввести Ландо начать И иметь все конфигурации на вашем приложении.

Во-первых, давайте сосредоточимся на создании нашего приложения HTTP-сервера узла.

Узел HTTP Server.

Nodejs является мощным инструментом для запуска серверных сервисов, веб-приложений и инструментальной инструментарии. Для этой статьи мы собираемся сосредоточиться на одном из его наиболее распространенных случаев использования, которые устанавливают простой HTTP-сервер и обрабатывать базовую маршруту.

Настройка HTTP-сервера

Мы будем использовать популярные модули Nodejs под названием http . для обработки этого; который поставляется по умолчанию с Nodejs:

// global dependencies
const http = require("http");

const requestHandler = function (req, res) {
  res.header('Content-type', 'text/html');
  res.end('I have built my own http server!');
};

http
  .createServer(requestHandler) //create a server object
  .listen(8080); //the server object listens on port 8080

Как видите, http . имеет метод под названием Createserver который возвращает новый экземпляр http. Сервер , когда мы получим новый запрос, поступающий через RequestHandler Отказ Эта функция принимает как Запрос и ответ объект.

Таким образом, мы можем справиться с разными сценариями, когда разные Запрос Парми как УРЛ путь приходит и соответственно, отправьте правильно ответ Результаты, такие как Заголовок или код ответа Отказ Здесь мы делаем все просто, просто установив тело ответа как Строка Отказ

Эта настройка работает для простого примера, но нам нужно немного сложного процесса для обработки других общих веб-приложений, таких как маршрутизация, обработка ошибок, запрос и обработка ответов. Один вариант у нас есть, это использовать веб-каркас, например Экспресс Для этого.

Давайте посмотрим на пример погрузки отдельно обращения с различными путями URL:

// global dependencies
const http = require("http");
const express = require('express');
const app = express();

// request handlers
const homepageHandler = function (req, res) {
  res.header('Content-type', 'text/html');
  return res.end('I am on homepage');
};
const aboutpageHandler = function (req, res) {
  res.header('Content-type', 'text/html');
  return res.end('I am on about page');
};

http
  .createServer(app) //create a server object
  .listen(8080); //the server object listens on port 8080

// Basic HTTP response
app.get('/', homepageHandler);
app.get('/about', aboutpageHandler);

После инициализации const () и передавать его как параметр для Createserver Сервер начинает слушать порта 8080 для разных путей URL. Например, когда браузер попадает в URL , app.get ('/about') вызывает свой обратный вызов, который является ОТПЕГАЖДЕНА Отказ Посмотрите на себя в этой песочнице:

Настроить Lando

Теперь, когда у нас есть наш приложение для сервера узла, мы можем сосредоточиться на создании Lando. Мы собираемся настроить простой узел Docker Container с поддерживаемым версией PATCH для нашего проекта, а затем обрабатывать некоторые процессы на этапе сборки и обслуживание приложения на начальную нагрузку. В качестве заключительной цели мы хотим изучить настроек двух контейнеров докеров для нашего проекта, один обслуживающий http . Сервер, а другой поддерживает https сервер.

Существует два варианта установки основы Lando Configs:

  • Вызов Lando init Передавая необходимые параметры для Поддерживаемые рецепты И отпустить Lando настроить для нас конфигурацию. На сегодняшний день Lando поддерживает несколько рецептов, таких как Drupal , Joomla , Ларалвел , WordPress и т. д., поэтому убедитесь, что проверьте, поддерживается ли ваш необходимый стек или нет
  • Если ваш нужный стек не поддерживается, не волнуйтесь. Все, что вам нужно, это Сервис которые можно настроить, создавая Lando.yml Файл в корне приложения

Поскольку наш стек Nodejs Server не поддерживается текущими рецептами, мы собираемся сосредоточиться на создании самостоятельной настройки. Начнем с создания Lando.yml Файл в корневом каталоге.

Настройка базового конфига в Lando.yml

В этом файле мы собираемся определить основные услуги, которые нам нужны для разработки нашей заявки. Давайте начнем с определения Имя и база Узел Услуги называется Узел-http :

// lando.yml
name: lando-node-server
services:
  node-http:
    type: node:12

Мы используем версию PATCH 12 узла, который совместим с нашими Экспресс Зависимость:

// express's node compatibility

"engines": {
  "node": ">=0.10.0"
}

Lando позволяет нам запустить команды в оболочке против наших услуг. Итак, мы можем проверить, что версия узла контейнера, которая была создана нашей Lando по умолчанию Сервис на самом деле правильно:

// terminal
lando ssh --service defaults --command "env | grep NODE_VERSION"

// You get
NODE_VERSION=12.16.2
// which is what we expect

СТАЖИ СТАЖИ

В качестве первого шага мы сосредоточимся на этапах сборки приложений. В целом у нас есть четыре параметра конфигураций для установки зависимостей или построения приложения в нашем сервисе. Эти конфиги — build, build_as_root, run_ run_as_root Отказ Обратите внимание, что эти команды запускаются только в первый раз Lando инициализирует наше приложение. Если мы хотим, чтобы построить шаги снова запустить, мы можем вызвать Lando Rebuild Отказ

Например, построить Позволяет устанавливать зависимости, используя пряжа Что нужно до нашего приложения. Если нам когда-нибудь нужно установить пакет сервера низкого уровня, который нуждается в доступе администратора, мы можем использовать build_as_root. здесь.

Давайте попробуем:

// lando.yml

name: lando-node-12
services:
  defaults:
    type: node:12
    build: yarn

// Result we get in terminal
Your app has started up correctly.
Here are some vitals:

 NAME           lando-node-12                        
 LOCATION       /Users/USERNAME/Projects/node12
 SERVICES       defaults

Итак, на данный момент, если мы запустим Ландо начать В терминале Lando настроит контейнеры Docker с указанной версией PATCH, который мы определены для узла, запустите наш шаг сборки и установить все зависимости в Package.json. .

Подавать/запустить контейнер

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

Оказывается, что у нас было на предыдущем шаге, это контейнер CLI для нашего сервиса, который мы можем запустить команды, чтобы запустить его. Это именно то, что мы собираемся сделать в Lando.yml Config для автоматизации этого шага также:

// lando.yml

name: lando-node-12
services:
  defaults:
    ...
    command: /app/node_modules/.bin/nodemon src/app-http.js --watch src

// Now we get a URL where our application is served
Your app has started up correctly.
Here are some vitals:
DEFAULTS URLS  http://localhost:32847

Чтобы проверить, где были установлены зависимости в нашем контейнере, мы можем SSH в наш сервис, как это:

// listing all the files in the root directory
lando ssh --service defaults --command "ls -ls /"

// we get several folders listed in our container
0 drwxr-xr-x  10 node dialout  320 Apr 12 19:48 app
4 drwxr-xr-x   1 root root    4096 Mar 31 02:07 bin
4 drwxr-xr-x   2 root root    4096 Feb  1 17:09 boot
...

// We then try to cd to places we assume hold the no_modules intallation
lando ssh -t --service defaults --command 'cd /app && exec bash -l'

// and we see our node_modules directory here under app/
README.md  node_modules  package.json  src  yarn.lock

Используя SSL

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

То, как мы можем сделать это через Самозагодный сертификат, который обычно построен с использованием OpenSSL , но это то, что Ландо будет справиться с нами. Сертификат и ключевые файлы будут находиться под /Сертирование Справочник, который мы можем использовать в новом сервере узла для обеспечения определенного порта (который по умолчанию — 443 в Lando). Давайте посмотрим на это в действии:

//app-https.js

'use strict';

// global dependencies
const fs = require('fs');
const http = require('http');
const https = require('https');
const express = require('express');

// initialization
const app = express();
const key = fs.readFileSync('/certs/cert.key');
const cert = fs.readFileSync('/certs/cert.crt');

// request handlers
const homepageHandler = function (req, res) {
  res.header('Content-type', 'text/html');
  return res.end('I am on homepage');
};

const aboutpageHandler = function (req, res) {
  res.header('Content-type', 'text/html');
  return res.end('I am on about page');
};

// Create our servers
https.createServer({key, cert}, app).listen(443);
http.createServer(app).listen(3000);

// Basic HTTP response
app.get('/', homepageHandler);
app.get('/about', aboutpageHandler);
// lando.yml
// setting a new service for a node server with SSL support

name: lando-node-12
services:
  ...
  custom:
    type: node:12
    ssl: true
    port: 3000
    build:
      - yarn
    command: /app/node_modules/.bin/nodemon src/app-https.js --watch src --ignore *.test.js

Теперь после запуска Lando Rebuild Мы видим, что у нас есть два сервиса вверх и работают:

NAME           lando-node-12                        
 LOCATION       /Users/USERNAME/Projects/node12
 SERVICES       defaults, custom                     
 DEFAULTS URLS  http://localhost:32898               
 CUSTOM URLS    http://localhost:32899               
                https://localhost:32900

Также после вызова SSH в Пользовательский Сервис, мы можем видеть, какие файлы сертификатов генерируются:

lando ssh -t --service defaults --command 'cd /certs && ls'

// generated certificates
cert.crt  cert.csr  cert.ext  cert.key  cert.pem  server.crt  server.key

На данный момент, если мы отправляемся к предоставленному URL https://localhost: 32900 Мы видим, что браузер жалуется на недействительный сертификат. Это нормально, потому что мы не подписали его.

После прохождения на этой странице мы можем видеть, что подключение HTTPS было успешно установлено:

Чтобы узнать больше о обработке SSL в Lando, обязательно прочитайте Это руководство тщательно.

Тестирование установки

Теперь пришло время проверить нашу настройку. Представьте, что вы являетесь новым разработчиком в команде, и вы хотите работать на этом репозитории узла сервера. Все, что вам нужно сделать, это тянуть Этот Github Repo Установите Lando на вашу машину и запустите Ландо начать И ты хорош, чтобы пойти.

Заключение

Вместе мы рассмотрели и построили простой процесс создания и запуска нашей среды разработки для веб-сервера узла.

Следующие шаги?

Есть еще много вещей, которые мы можем исследовать с Lando:

  • Обязательно прочитайте более тщательно о Lando рецепты и Услуги Отказ Добавьте дополнительные для разных частей вашего стека, такого как база данных, интерфейсы, API, мониторинг и Инструменты аналитики
  • Если вам нужен комплексной процесс инструмента, вы можете рассмотреть возможность использования Lando оснастить Отказ С этим вы можете построить сложные шаги построения по всем вашим контейнерам с помощью одной командой. Кроме того, вы можете настроить тест CI в инструментарии и запустить его локально
  • Рассмотрим Оптимизация процесса Бег и строительство контейнеров докеров с Lando
  • И самое главное, решают проблемы, которые стоит решить. Не участвуйте в чрезмерной инженерии и сосредоточиться только на строительных конфигах, которые случаются более одного раза в вашем жизненном цикле приложения

Ресурсы

https://www.edureka.co/blog/what-is-docker-container

https://nodejs.org/en/knowledge/HTTP/servers/how-to-create-a-HTTP-server/

https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Introduction

https://flaviocopes.com/express-https-self-signed-certificate/

https://docs.lando.dev/guides/lando-info.html

Plug: Logrocket, DVR для веб-приложений

Logrocket Это инструмент для ведения журнала Frontend, который позволяет вам повторить проблемы, как если бы они произошли в вашем браузере. Вместо того, чтобы угадать, почему случаются ошибки, или просят пользователей на скриншоты и журнал свалки, Lognocket позволяет воспроизвести сеанс, чтобы быстро понять, что пошло не так. Он отлично работает с любым приложением, независимо от основ и имеет плагины для регистрации дополнительного контекста из Redux, Vuex и @ Ngrx/Store. В дополнение к регистрации действий и состояния Redux, Lognocket Records Console Logs, ошибки JavaScript, Stacktraces, Networks/Ответы с заголовками + тел, метаданные браузера и пользовательские журналы. Он также привлекает инструменты DOM для записи HTML и CSS на странице, воссоздая Pixel-Perfect видео даже самых сложных одностраничных приложений. Попробуйте бесплатно Отказ

Пост Введение в Ландо появился первым на Logocket blog Отказ

Оригинал: «https://dev.to/bnevilleoneill/introduction-to-lando-36dl»