Kutoka Sifuri hadi Uzalishaji: FastAPI kwenye Fly.io na GitHub Actions
Unatuma kodi kwenye main. Majaribio (tests) hufanyika. API yako inaanza kufanya kazi baada ya dakika chache.
Hivi ndivyo unavyojenga mfumo wa kitaalamu wa kusambaza programu (deployment pipeline). Huhitaji kanzi data (database) au Redis kwa ajili ya mpangilio huu. Unahitaji tu programu moja ya FastAPI, picha (image) moja ya Docker, faili moja la usanidi la YAML, na mtiririko (workflow) mmoja wa GitHub Actions.
Mtiririko unaonekana hivi:
git push → GitHub Actions → fanya majaribio → jenga picha → sambaza kwenye Fly.io → live
Kuna sehemu tatu katika mfumo huu:
- Programu yako ya FastAPI. Unaifunga kwenye picha ya Docker ili ifanye kazi kwa namna ile ile kila mahali.
- Fly.io. Inafanya kazi ya picha yako kwenye mashine ndogo. Inashughulikia uelekezaji (routing) na ukaguzi wa afya (health checks) kwa ajili yako.
- GitHub Actions. Inafuatilia kodi yako na kusambaza programu moja kwa moja kila unapofanya push.
Ili kuifanya hii iwe salama, tumia 'scoped deploy token'. Usitumie token yako binafsi ya Fly API. Tengeneza token ambayo ina ruhusa ya kugusa programu moja mahususi tu. Hifadhi token hii kwenye GitHub Secrets kama FLY_API_TOKEN.
Maelezo muhimu ya kiufundi kwa ajili ya mpangilio wako:
- Tumia
Dockerfileyenye mtumiaji asiyeroot. Hii inaboresha usalama. - Unganisha (bind) programu yako kwenye
0.0.0.0kwenyeDockerfileyako. Ukitumia127.0.0.1, Fly haiwezi kuifikia programu yako. - Tumia faili la
fly.yaml. Faili hili ndilo chanzo chako cha ukweli (source of truth). Linaainisha eneo (region), kumbukumbu (memory), na bandari (port) yako. - Sanidi sehemu ya ukaguzi wa afya (health check endpoint) kwenye FastAPI. Fly hutumia hii kuhakikisha programu yako inafanya kazi kabla ya kuelekeza trafiki kwake. Hii inaruhusu usambazaji bila kusimama kwa programu (zero-downtime deployments).
Katika mtiririko wako wa GitHub Actions, tumia amri ya needs: test. Hii inahakikisha programu yako inasambazwa tu ikiwa majaribio yako yamefanikiwa. Ikiwa kodi yako ina hitilafu, mtiririko unasimama kabla ya kufika kwenye uzalishaji (production).
Mpangilio huu unakua pamoja nawe. Unaweza kuongeza mazingira ya staging na production kwa kutumia faili tofauti za usanidi kama fly.stg.yaml na fly.prod.yaml.
Acha kusambaza programu kwa mkono. Hamia kutoka kwenye "inafanya kazi kwenye laptop yangu" hadi kwenye "inatumwa kila unapofanya merge."
Chanzo: https://dev.to/devded/zero-to-production-fastapi-on-flyio-and-github-actions-1ejo
