Ga naar inhoud

Fly

Fly is een hosting platform waar U server applicaties en databases kunnen laten draaien met een focus op edge computing. Zie hun website voor meer informatie.

Opmerking

De in dit document gespecificeerde commando's zijn onderworpen aan Fly's pricing, zorg ervoor dat u deze goed begrijpt voordat u verder gaat.

Registreren

Als je nog geen account heb, dan zal je er een moeten maken.

Installeren van flyctl

De belangrijkste manier om met Fly te communiceren is met het bijbehorende CLI-programma, flyctl, dat je moet installeren.

macOS

brew install flyctl

Linux

curl -L https://fly.io/install.sh | sh

Andere installatiemogelijkheden

Voor meer opties en details, zie de flyctl installatie docs.

Aanmelden

Om aan te melden vanuit je terminal, voer je het volgende commando uit:

fly auth login

Je Vapor project configureren

Alvorens te deployen naar Fly, moet u ervoor zorgen dat u een Vapor-project heeft met een correct geconfigureerd Dockerbestand, aangezien Fly dit nodig heeft om uw app te bouwen. In de meeste gevallen zou dit heel eenvoudig moeten zijn, omdat de standaard Vapor-sjablonen er al een bevatten.

Nieuw Vapor project

De eenvoudigste manier om een nieuw project te maken is te beginnen met een sjabloon. U kunt er een maken met behulp van GitHub-sjablonen of de Vapor-toolbox. Als u een database nodig hebt, is het aanbevolen om Fluent met Postgres te gebruiken; Fly maakt het eenvoudig om een Postgres-database aan te maken om uw apps mee te verbinden (zie de specifieke sectie hieronder).

De Vapor toolbox gebruiken

Zorg er eerst voor dat je de Vapor toolbox hebt geïnstalleerd (zie de instructies voor macOS of Linux). Maak uw nieuwe app aan met het volgende commando, waarbij u app-name vervangt door de gewenste app-naam:

vapor new app-name

Dit commando toont een interactieve prompt waarmee u uw Vapor-project kunt configureren, hier kunt u Fluent en Postgres selecteren als u die nodig hebt.

De GitHub sjablonen gebruiken

Kies in de volgende lijst het sjabloon dat het beste bij uw behoeften past. Je kunt het lokaal klonen met Git of een GitHub-project aanmaken met de knop "Gebruik dit sjabloon".

Bestaand Vapor project

Als je een bestaand Vapor-project hebt, zorg er dan voor dat je een goed geconfigureerde Dockerfile in de root van je map hebt staan; de Vapor docs over het gebruik van Docker en Fly docs over het deployen van een app via een Dockerfile kunnen van pas komen.

Start uw app op Fly

Zodra uw Vapor-project klaar is, kunt u het lanceren op Fly.

Zorg er eerst voor dat je huidige map is ingesteld op de hoofdmap van je Vapor-toepassing en voer het volgende commando uit:

fly launch

Dit start een interactieve prompt om de instellingen van uw Fly-toepassing te configureren:

  • Name: u kunt er een typen of leeg laten om een automatisch gegenereerde naam te krijgen.
  • Region: standaard is dit degene die het dichtst bij u staat. U kunt kiezen om die te gebruiken of een andere in de lijst. Dit is later gemakkelijk te veranderen.
  • Database: u kunt Fly vragen om een database aan te maken voor gebruik met uw app. Als u dat liever zelf doet, kunt u later altijd hetzelfde doen met de fly pg create en fly pg attach commando's (zie de Configuratie van Postgres sectie voor meer details).

Het fly launch commando maakt automatisch een fly.toml bestand aan. Het bevat instellingen zoals private/publieke port mappings, health check parameters, en vele andere. Als je net een nieuw project hebt gemaakt met vapor new, hoeft het standaard fly.toml bestand niet gewijzigd te worden. Als je een bestaand project hebt, is de kans groot dat fly.toml ook in orde is met geen of kleine wijzigingen. U kunt meer informatie vinden in de fly.toml documentatie.

Merk op dat als u Fly vraagt om een database aan te maken, u even moet wachten tot deze is aangemaakt en de health checks geslaagd zijn.

Voor het afsluiten zal het fly launch commando je vragen of je je app onmiddellijk wilt deployen. Je kunt dit accepteren of het later doen met fly deploy.

Tip

Wanneer je huidige directory zich in de root van je app bevindt, detecteert de fly CLI tool automatisch de aanwezigheid van een fly.toml bestand dat Fly laat weten op welke app je commando's zich richten. Als je een specifieke app wilt gebruiken, ongeacht je huidige directory, kun je -a naam-van-je-app toevoegen aan de meeste Fly commando's.

Deployen

U voert het fly deploy commando uit wanneer u nieuwe wijzigingen in Fly wilt toepassen.

Fly leest de Dockerfile en fly.toml bestanden van uw directory om te bepalen hoe uw Vapor project gebouwd en uitgevoerd moet worden.

Zodra uw container is gebouwd, start Fly een instantie ervan. Het zal verschillende health checks uitvoeren, om ervoor te zorgen dat uw applicatie goed draait en uw server reageert op verzoeken. Het fly deploy commando sluit af met een foutmelding als de gezondheidscontroles mislukken.

Standaard zal Fly teruggaan naar de laatste werkende versie van uw app als de health checks falen voor de nieuwe versie die u probeerde te implementeren.

Configuratie Postgres

Een Postgres database aanmaken op Fly

Als u geen database-app hebt gemaakt toen u uw app voor het eerst lanceerde, kunt u dat later doen met:

fly pg create

Dit commando creëert een Fly app die databases kan hosten die beschikbaar zijn voor uw andere apps op Fly, zie de toegewijde Fly documentatie voor meer details.

Zodra uw database-app is gemaakt, gaat u naar de hoofdmap van uw Vapor-app en voert u dit commando uit:

fly pg attach name-of-your-postgres-app

Als je de naam van je Postgres app niet weet, kun je hem vinden met fly pg list.

Het fly pg attach commando maakt een database en gebruiker aan die bestemd zijn voor je app, en stelt deze vervolgens bloot aan je app via de DATABASE_URL omgevingsvariabele.

Opmerking

Het verschil tussen fly pg create en fly pg attach is dat de eerste een Fly app toewijst en configureert die Postgres databases zal kunnen hosten, terwijl de tweede een eigenlijke database en gebruiker aanmaakt die bestemd is voor de app van uw keuze. Als het aan uw eisen voldoet, kan een enkele Postgres Fly app meerdere databases hosten die door verschillende apps worden gebruikt. Wanneer je Fly vraagt om een database app aan te maken in fly launch, doet het het equivalent van het aanroepen van zowel fly pg create als fly pg attach.

Je Vapor app verbinden met de database

Zodra uw app is gekoppeld aan uw database, stelt Fly de DATABASE_URL omgevingsvariabele in op de verbindings URL die uw referenties bevat (het moet worden behandeld als gevoelige informatie).

Bij de meeste gebruikelijke Vapor project setups, configureer je je database in configure.swift. Dit is hoe je dit zou kunnen doen:

if let databaseURL = Environment.get("DATABASE_URL") {
    try app.databases.use(.postgres(url: databaseURL), as: .psql)
} else {
    // Handel ontbrekende DATABASE_URL hier af...
    //
    // Als alternatief kunt u ook een andere configuratie instellen 
    // afhankelijk van of app.environment is ingesteld op 
    // `.development` of `.production`
}

Op dit punt zou je project klaar moeten zijn om migraties uit te voeren en de database te gebruiken.

Migraties uitvoeren

Met fly.toml's release_command kun je Fly vragen om een bepaald commando uit te voeren voordat je je hoofdserverproces uitvoert. Voeg dit toe aan fly.toml:

[deploy]
 release_command = "migrate -y"

Opmerking

De bovenstaande code snippet gaat ervan uit dat je de standaard Vapor Dockerfile gebruikt die je app ENTRYPOINT op ./App zet. Concreet betekent dit dat wanneer je release_command instelt op migrate -y, Fly ./App migrate -y zal aanroepen. Als je ENTRYPOINT op een andere waarde is ingesteld, moet je de waarde van release_command aanpassen.

Fly zal uw release commando uitvoeren in een tijdelijke instantie die toegang heeft tot uw interne Fly netwerk, geheimen en omgevingsvariabelen.

Als uw release commando mislukt, zal de deployment niet doorgaan.

Andere databases

Hoewel Fly het gemakkelijk maakt om een Postgres database app te maken, is het ook mogelijk om andere soorten databases te hosten (zie bijvoorbeeld "Gebruik een MySQL database" in de Fly documentatie).

Secrets en omgevingsvariabelen

Secrets

Gebruik geheimen om gevoelige waarden in te stellen als omgevingsvariabelen.

 fly secrets set MYSECRET=A_SUPER_SECRET_VALUE

Waarschuwing

Onthoud dat de meeste shells een geschiedenis bijhouden van de commando's die je getypt hebt. Wees hier voorzichtig mee als je op deze manier geheimen instelt. Sommige shells kunnen geconfigureerd worden om commando's die voorafgegaan worden door een spatie niet te onthouden. Zie ook het fly secrets import commando.

Voor meer informatie, bekijk de documentatie van fly secrets.

Omgevingsvariabelen

U kunt andere niet-gevoelige omgevingsvariabelen instellen in fly.toml, bijvoorbeeld:

[env]
  MAX_API_RETRY_COUNT = "3"
  SMS_LOG_LEVEL = "error"

SSH connectie

U kunt verbinding maken met de instanties van een app met behulp van:

fly ssh console -s

De logs controleren

U kunt de live logs van uw app controleren met:

fly logs

Volgende stappen

Nu uw Vapor-app is uitgerold, kunt u nog veel meer doen, zoals uw apps verticaal en horizontaal schalen over meerdere regio's, persistente volumes toevoegen, continuous deployment opzetten of zelfs gedistribueerde app-clusters maken. De beste plaats om te leren hoe u dit alles en nog veel meer kunt doen is de Fly docs.