Рубрики
Uncategorized

Первый взгляд на муху

Fly — это платформа для полных приложений стека и баз данных, которые необходимо работать по всему миру. Tagged Fly, Docker, контейнеры, DevOps.

Fly это платформа для полных приложений стека и баз данных, которые необходимо работать по всему миру. Fly выполняет ваш код рядом с пользователями и масштабирует в городах, где ваше приложение наиболее загружено. Вы можете запустить произвольные контейнеры Docker и популярные базы данных, такие как Postgres.

1. Настройка мух

Код для этого примера можно найти На моем GitHub Анкет

Установите FlyCtl CLI

Вы можете скачать CLI на Mac, Linux или Windows Анкет

brew install superfly/tap/flyctl

Создать учетную запись с помощью AUTH зарегистрироваться

Если вы новый пользователь, вы можете создать учетную запись с Flyctl Auth Reginup Анкет

flyctl auth signup

После открытия браузера вы можете:

  • Зарегистрируйтесь с вашим именем, электронной почтой и паролем.
  • Зарегистрируйтесь с помощью GitHub и проверьте свою электронную почту для получения ссылки, чтобы установить пароль для проверки.

Вам также будет предложено информация о оплате кредитных карт, необходимую для сборов за пределами бесплатного плана на лету. Смотрите Цены Больше подробностей.

Войдите в учетную запись с помощью авторизованного входа в систему

Если у вас уже есть учетная запись, вы можете войти в систему с Flyctl Auth Login Анкет

flyctl auth login

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

2. Создать сервер узлов с помощью Express

mkdir ajcwebdev-fly
cd ajcwebdev-fly
npm init -y
npm i express --save
touch index.js Dockerfile .dockerignore

Добавить код сервера в index.js

const express = require("express")
const app = express()

const port = process.env.PORT || 3000

app.get(
  "/", (req, res) => {
    greeting = "

ajcwebdev-fly

" res.send(greeting) } ) app.listen( port, () => console.log(`Hello from port ${port}!`) )

Запустить сервер

node index.js
Hello from port 3000!

Создайте Dockerfile

Добавьте следующий код в Dockerfile в корневом каталоге вашего проекта.

FROM node:14-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm i
COPY . ./
EXPOSE 8080
CMD [ "node", "index.js" ]

Создать .dockerignore

Добавьте следующий код в .dockerignore в том же каталоге, что и ваш Dockerfile Анкет

node_modules
Dockerfile
.dockerignore
.git
.gitignore
npm-debug.log

3. Приложение запуска на Fly с запуском Flyctl

Запустить Flyctl запуск В каталоге с исходным кодом для настройки вашего приложения для развертывания. Это создаст и настроит приложение FLY, осмотрев ваш исходный код и побуждая вас развернуть.

flyctl launch --name ajcwebdev-fly --region sjc
Creating app in /Users/ajcwebdev/ajcwebdev-fly
Scanning source code
Detected Dockerfile app
Automatically selected personal organization: Anthony Campolo
Created app ajcwebdev-fly in organization personal
Wrote config file fly.toml
Your app is ready. Deploy with `flyctl deploy`
? Would you like to deploy now? No

Это создает Fly.toml файл.

app = "ajcwebdev-fly"

kill_signal = "SIGINT"
kill_timeout = 5

[env]

[experimental]
  allowed_public_ports = []
  auto_rollback = true

[[services]]
  http_checks = []
  internal_port = 8080
  protocol = "tcp"
  script_checks = []

[services.concurrency]
  hard_limit = 25
  soft_limit = 20
  type = "connections"

[[services.ports]]
  handlers = ["http"]
  port = 80

[[services.ports]]
  handlers = ["tls", "http"]
  port = 443

[[services.tcp_checks]]
  grace_period = "1s"
  interval = "15s"
  restart_limit = 6
  timeout = "2s"

Добавьте следующее Порт номер под env Анкет

[env]
  PORT = 8080

Развернуть приложение с помощью FlyCtl развертывать

flyctl deploy
Deploying ajcwebdev-fly
==> Validating app configuration
--> Validating app configuration done

Services
TCP 80/443 ⇢ 8080
Waiting for remote builder fly-builder-old-sun-2915... connecting
Creating WireGuard peer "interactive-Anthonys-MacBook-Pro-anthony-stepzen-com-783" in region "iad" for organization personal

Remote builder fly-builder-old-sun-2915 ready
==> Creating build context
--> Creating build context done
==> Building image with Docker
Sending build context to Docker daemon  6.034kB

Step 1/7 : FROM node:14-alpine
14-alpine: Pulling from library/node
Digest: sha256:0c80f9449d2690eef49aad35eeb42ed9f9bbe2742cd4e9766a7be3a1aae2a310
Status: Downloaded newer image for node:14-alpine
 ---> d93b35a67404

Step 2/7 : WORKDIR /usr/src/app
 ---> Running in 81218d388a5e
 ---> 2ae716ba5525

Step 3/7 : COPY package*.json ./
 ---> ad19515d5299

Step 4/7 : RUN npm i
 ---> Running in 41102030018c
npm WARN ajcwebdev-fly@1.0.0 No description
npm WARN ajcwebdev-fly@1.0.0 No repository field.

added 50 packages from 37 contributors and audited 50 packages in 1.923s

found 0 vulnerabilities
 ---> c9f0004b1f7f

Step 5/7 : COPY . ./
 ---> 05927a4fb537

Step 6/7 : EXPOSE 8080
 ---> Running in 5a3069e1bc22
 ---> a3d733fda688

Step 7/7 : CMD [ "node", "index.js" ]
 ---> Running in 5e1c8548aed1
 ---> 3dff2152628b

Successfully built 3dff2152628b
Successfully tagged registry.fly.io/ajcwebdev-fly:deployment-1628129385
--> Building image done

==> Pushing image to fly
The push refers to repository [registry.fly.io/ajcwebdev-fly]
deployment-1628129385: digest: sha256:467d26b125b95ad397ff1258a0cf94d7cccd72e63cfd153f8632092164e0f9d7 size: 1992
--> Pushing image done

Image: registry.fly.io/ajcwebdev-fly:deployment-1628129385
Image size: 120 MB

==> Creating release
Release v0 created

You can detach the terminal anytime without stopping the deployment

Monitoring Deployment

1 desired, 1 placed, 1 healthy, 0 unhealthy
[health checks: 1 total, 1 passing]

--> v0 deployed successfully

Показать текущее состояние приложения со статусом FlyCtl

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

flyctl status
App
  Name     = ajcwebdev-fly       
  Owner    = personal                    
  Version  = 0                           
  Status   = running                     
  Hostname = ajcwebdev-fly.fly.dev  

Deployment Status
  ID          = d94d886a-f338-28cf-4078-1ed838eea224         
  Version     = v0                                           
  Status      = successful                                   
  Description = Deployment completed successfully            
  Instances   = 1 desired, 1 placed, 1 healthy, 0 unhealthy  

Instances
ID       VERSION REGION DESIRED STATUS  HEALTH CHECKS      RESTARTS CREATED 
40591407 0       sjc    run     running 1 total, 1 passing 0        37s ago

Открыть браузер для текущего развернутого приложения с открытым FlyCtl

flyctl open
Opening http://ajcwebdev-fly.fly.dev/

Посетите ajcwebdev-fly.fly.dev Чтобы увидеть сайт.

Оригинал: «https://dev.to/ajcwebdev/a-first-look-at-fly-3a87»