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»