(function(w,d,s,l,i){w[l]=w[l]|||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=? 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Rails lietotnes izvietošana ar Amazon ECS - The Codest
The Codest
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Nozares
    • Fintech un banku darbība
    • E-commerce
    • Adtech
    • Healthtech
    • Ražošana
    • Loģistika
    • Automobiļu nozare
    • IOT
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
Atpakaļ bultiņa ATGRIEZTIES ATPAKAĻ
2019-03-24
Programmatūras izstrāde

Rails lietotnes izvietošana ar Amazon ECS

The Codest

Marcin Doliwa

Software Engineer

Šajā pamācībā vēlos parādīt, kā izvietot Rails lietotnes paraugu, izmantojot Amazon Elastic Container Service (ECS).

Izveidosim to, darbinot sliedes jauns paraugs-rails-app, pēc tam ģenerējot kontroliera pamatdarbību sliedes g kontrolieris Welcome index un iestatot maršrutus uz saknes ceļu kā `saknes uz: welcome#index”.

Mūsu mērķis ir panākt, lai šī sagaidīšanas lapa tiktu ieviesta, izmantojot ECS.

Repozitorija izveide, izmantojot Amazon elastīgo konteineru reģistru (ECR)

Amazon ECR ir konteineru reģistrs. Mēs to izmantosim, lai uzglabātu mūsu lietotnes attēlus un izvilktu tos no tā, lai tie darbotos ECS.

Dodieties uz savu AWS panelis, meklējiet Elastīgs konteiners
Reģistrs
un noklikšķiniet uz Sākt. Tiek parādīts tālāk redzamais ekrāns:

repozitorijs ar Amazon elastīgo konteineru reģistru

Mēs izveidosim privātu repozitoriju un nosauksim to par paraugs-rails-app.

Repozitorijs ir pieejams, bet tas ir tukšs. Mēs vēlamies, lai tajā būtu mūsu lietotnes attēls. Šis ir nākamais solis.

# mest kļūdas, ja kopš Gemfile.lock ir mainīts Gemfile.lock

RUN bundle config --global frozen 1

WORKDIR /app

COPY Gemfile Gemfile.lock ./

Palaist paketi instalēt

COPY . .

CMD ["rails", "server", "-b", "0.0.0.0.0"]

Pēc tam mums jāizveido attēls un jāievada tas ECR repozitorijā.

Pirms tam ar `rails assets:precompile` iepriekš kompilēsim resursus.

Tagad dodieties uz izveidoto repozitoriju. Ekrāna augšdaļā redzēsiet Pārskatīt push komandas pogu ar sīkāku informāciju par to, kā to izdarīt.

Manā gadījumā (Linux) es to palaidu ar šiem AWS norādījumiem:

aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 212516879399.dkr.ecr.eu-central-1.amazonaws.com

docker build -t sample-rails-app .

docker tag sample-rails-app:latest 212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest

docker push 212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest

Pārliecinieties, ka lietotājam ir atļauts veikt šo darbību. Es pievienoju savam lietotājam politiku AmazonElasticContainerRegistryPowerUser, kas izskatās šādi:

{
    "Versija": "2012-10-17",
    "Paziņojums": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ecr:GetRegistryPolicy",
                "ecr:DescribeRegistry",
                "ecr:GetAuthorizationToken",
                "ecr:DeleteRegistryPolicy",
                "ecr:PutRegistryPolicy",
                "ecr:PutReplicationConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Atļaut",
            "Action": "ecr:*",
            "Resurss": "arn:aws:ecr:*:212516879399:repository/*"
        }
    ]
}

Mums ir sagatavots dokera tēls.

Lietojumprogrammu slodzes balansētāja izveide

Vēlos, lai ārpasaule varētu izveidot savienojumu tikai ar manu lietojumprogrammu slodzes balansētāju. Tas nodos datplūsmu konteineriem, kas darbojas mūsu ECS klasterī.

Iet uz EC2 pakalpojumi -> Slodzes līdzsvarošana -> Slodzes balansētāji, noklikšķiniet uz Izveidot slodzes balansētāju, izvēlieties Pieteikumu slodzes balansētājs un noklikšķiniet uz Izveidot pogu.

Iestatiet tās nosaukumu sample-rails-app-alb, izmantojiet savu noklusējuma VPC un atlasiet visus tā apakštīklus.

Mēs esam palikuši ar Drošības grupas un Klausītāji un maršrutēšana sadaļas.

Drošības grupas

Mēs izveidosim jaunu drošības grupu mūsu slodzes balansētājam. Tā darbojas kā ugunsmūris; mēs iestatīsim noteikumus ienākošajai un izejošajai datplūsmai. Mēs vēlamies pieņemt ienākošo http datplūsmu (TCP ports 80) un atļaut visu izejošo datplūsmu. 

Lai to izdarītu, noklikšķiniet uz “Jaunas drošības grupas izveide” saite.

Sadaļā “Pamatinformācija”, iestatiet nosaukumu un aprakstu, atstājiet noklusējuma VPC.

Manā gadījumā - nosaukums: “paraugs-rails-app-alb-sg”, apraksts: “http no ārpuses, viss no iekšpuses”

Pievienojiet ienākošo noteikumu ar Type: HTTP un avots: Jebkur-IPv4. Atstājiet izejošos noteikumus tādus, kādi tie ir.

Noklikšķiniet uz izveidot drošības grupu, pēc tam atgriezieties cilnē, kurā izveidojāt lietojumprogrammu slodzes balansētāju, atsvaidziniet drošības grupas un pievienojiet tikko izveidoto grupu, noņemiet noklusējuma grupu.

Klausītāji un maršrutēšana

Šajā sadaļā mēs noteiksim, kur vēlamies, lai slodzes balansētājs nodod datplūsmu. Atstājiet Klausītājs Protokols un Osta kā HTTP un 80, jo tas ir tieši tas, ko mēs vēlamies, un noklikšķiniet uz “Izveidot mērķa grupu” saite.

Iestatiet nosaukumu “sample-rails-app-alb-tg”. Vienīgā izmaiņa ir ostas numurs. Mēs to nodosim portam 3000, jo tas ir mūsu Rails lietotnes ports. Ignorējiet nākamo soli (Reģistrētie mērķi) un izveidojiet mērķa grupu.

Tagad atgriezieties cilnē, kurā veidojām lietojumprogrammu slodzes balansētāju, atsvaidziniet mērķa grupu un atlasiet to, kuru tikko izveidojām.

Mūsu lietojumprogrammu slodzes balansētājs ir gatavs, tagad spēlēsimies ar ECS.

ECS kopas izveide

Jūs redzēsiet daudz biedējošu terminu - klasteris, uzdevumi, uzdevumu definīcija, pakalpojumi. Lai to vienkāršotu, domājiet par klasteri kā par serveru grupu (EC2 instance). Uz katra no tiem mēs palaižam uzdevumus, kas ir vienkārši kopā darbojošos konteineru grupa. Uzdevuma definīcija apraksta, kuri konteineri ir attiecīgajā grupā un kādus resursus mēs vēlamies tiem piešķirt (atmiņa, CPU). Pakalpojumi seko līdzi šiem uzdevumiem, lai nodrošinātu, ka mūsu klasterī vienmēr darbojas pareizs skaits veselīgu uzdevumu.

Paturot to prātā, izveidosim savu klasteri.

Dodieties uz ECS lapu un noklikšķiniet uz Klasteri saite un Izveidot klasteri pogu. Izvēlieties “EC2 + Linux tīklu izveide” vienu un noklikšķiniet uz Nākamais solis. 

Iestatiet klastera nosaukumu “sample-rails-app-cluster”. Izvēlieties EC2 instance tipu, es izvēlējos t2-micro, jo tas ir pieejams bezmaksas līmeņa plānā. Instanču skaitu atstājiet 1. 

Sadaļā Tīklo izveide izmantojiet savu noklusējuma VPC un atlasiet visus tā apakštīklus. Noklikšķiniet uz izveidot, nedaudz pagaidiet, un voila, un mums ir izveidots jauns ECS klasteris.

Uzdevuma definīcija

Noklikšķiniet uz Uzdevumu definīcijas saiti, tad Izveidot jaunu uzdevuma definīciju pogu. Izvēlieties EC2 un noklikšķiniet uz Nākamais solis. Programma, ko mēs gatavojamies palaist, ir ļoti vienkārša, tāpēc mums šeit ir nepieciešamas tikai dažas opcijas. 

Komplekts Uzdevuma definīcija nosaukumu uz “paraugs-rails-app”, pēc tam dodieties uz Konteineru definīcijas sadaļu un noklikšķiniet uz “Pievienot konteineru”. Nosauciet konteinera nosaukumu kā “paraugs-rails-app” un iestatiet attēla atrašanās vietu formātā “repository-url/image:tag”. Jaunajā pārlūkprogrammas cilnē dodieties uz ECR, lai kopētu attēla URI. Manā gadījumā tas bija: “212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest”.

Iestatiet atmiņas ierobežojumu līdz ieteicamajam 300-500 MB. Tagad vissarežģītākā lieta - ostu kartēšana.

Mūsu lietotne darbojas konteinerā 3000 ostā. Tāpēc kā konteinera portu norādiet 3000. Mēs ievadīsim 0 kā saimnieka portu, kas būtībā nozīmē, ka tas izvēlas nejaušu portu. Par laimi, mūsu lietojumprogrammu slodzes balansētājs zinās šo portu kartēšanu un varēs pareizi novirzīt datplūsmu. Mēs varam pat palaist vairākus uzdevumus šajā vienā instancē. 

Pievienojiet vides mainīgo RAILS_ENV un iestatiet to uz ražošana.

Tagad noklikšķiniet uz Pievienot lai pievienotu mūsu konteinera definīciju, un noklikšķiniet uz Izveidot lai pabeigtu uzdevuma definīcijas iestatīšanu.

Pakalpojums

Mums ir klasteris, slodzes balansētājs un uzdevumu definīcija. Tagad mums kaut kādā veidā ir jāpalaiž šie uzdevumi klasterī. Tas ir pakalpojumu uzdevums. Dodieties uz jaunizveidoto klasteri, atlasiet Pakalpojumi un noklikšķiniet uz cilnes Izveidot pogu. 

Iestatiet palaišanas veidu EC2, pievienojiet nosaukumu “paraugs-rails-app-service”. Iestatiet uzdevumu skaitu 1 un noklikšķiniet uz Nākamais solis. Šajā lapā izvēlieties izvēles pogu Application Load Balancer un izvēlieties tai esošo IAM lomu. Sadaļā “Container to load balancer” (Konteiners slodzes balansēšanai) jau vajadzētu būt ievadīt pareizu konteineru “sample-rails-app:0:3000”, pēc tam noklikšķiniet uz “Add to load balancer” (Pievienot slodzes balansētājam).”

Kā “Production listener port” izvēlieties 80:HTTP; kā mērķa grupas nosaukumu izmantojiet iepriekš izveidoto - “sample-rails-app-alb-tg” un noklikšķiniet uz Nākamais solis. Atstāj Automātiskā mērogošana opcijas, noklikšķiniet uz Nākamais solis un Izveidot pakalpojumu.

ECS drošības grupas atjaunināšana

Varat doties uz izveidoto klastera lapu un pārbaudīt Uzdevumi cilnes, ir jābūt vienam darbojošam uzdevumam. Pakalpojums to ir uzsācis. Tagad dodieties uz EC2 pakalpojuma lapu, noklikšķiniet uz Load Balancers un apskatiet mūsu lietojumprogrammu slodzes balansētāja informāciju. Jums tur vajadzētu būt tā DNS nosaukumam. Nokopējiet to un atveriet pārlūkprogrammā. Tam vajadzētu jūs novirzīt uz mūsu lietojumprogrammu. Diemžēl mēs saņemam “504 vārtejas pārtraukuma laiks” kļūda. 

Problēma ir mūsu klastera drošības grupā. Tās ienākošie noteikumi neļauj ienākt datplūsmai no slodzes balansētāja. Lai to novērstu, atgriezieties EC2 panelī un noklikšķiniet uz pogas Drošības grupas saite. Klastera izveides procesā ir izveidota jauna grupa. Tās nosaukumam jāsākas ar “EC2ContainerService-sample-rails-app-cluster”. Noklikšķiniet uz tā un rediģējiet ienākošos noteikumus. Tā kā mēs vēlamies atļaut jebkuru datplūsmu no mūsu VPC, dodieties uz Amazon VPC paneli un pārbaudiet, kāds ir jūsu VPC IPv4 CIDR. Iestatiet noteikuma tipu “Visa satiksme” un avota IPv4 CIDR. Saglabājiet šo noteikumu un mēģiniet ielādēt balansētāja DNS nosaukumu. 

Cerams, ka jūs redzat tāpat kā es 🙂

Lasīt vairāk

GraphQL Ruby. Kā ir ar veiktspēju?

Sliedes un citi transporta līdzekļi

Rails attīstība ar TMUX, Vim, Fzf + Ripgrep

Saistītie raksti

Ilustrācija viedtālruņa veselības aprūpes lietotnei ar sirds ikonu un pieaugošo veselības diagrammu, kas apzīmēta ar The Codest logotipu, kurš pārstāv digitālās veselības un HealthTech risinājumus.
Programmatūras izstrāde

Veselības aprūpes programmatūra: Mārketinga programmatūra: veidi, izmantošanas gadījumi

Šodien veselības aprūpes organizāciju rīcībā esošie rīki vairs neatgādina papīra diagrammas, kas tika izmantotas pirms vairākiem gadu desmitiem. veselības aprūpes programmatūra tagad atbalsta veselības aprūpes sistēmas, pacientu aprūpi un mūsdienīgu veselības aprūpes sniegšanu klīniskajās un...

TĀKĀDĒJAIS
Abstrakta ilustrācija ar lejupejošu joslu diagrammu ar augošu bultiņu un zelta monētu, kas simbolizē izmaksu efektivitāti vai ietaupījumus. Augšējā kreisajā stūrī redzams The Codest logotips ar saukli "In Code We Trust" uz gaiši pelēka fona.
Programmatūras izstrāde

Kā paplašināt izstrādātāju komandu, nezaudējot produkta kvalitāti

Palielināt izstrādātāju komandu? Uzziniet, kā augt, nezaudējot produkta kvalitāti. Šajā rokasgrāmatā aplūkotas pazīmes, kas liecina, ka ir pienācis laiks paplašināt komandu, komandas struktūra, pieņemšana darbā, vadība un rīki, kā arī tas, kā The Codest var...

TĀKĀDĒJAIS
Programmatūras izstrāde

Uz nākotni noturīgu tīmekļa lietojumprogrammu veidošana: The Codest ekspertu komandas ieskats

Uzziniet, kā The Codest izceļas mērogojamu, interaktīvu tīmekļa lietojumprogrammu izveidē, izmantojot modernākās tehnoloģijas un nodrošinot viengabalainu lietotāja pieredzi visās platformās. Uzziniet, kā mūsu zināšanas veicina digitālo transformāciju un biznesa...

TĀKĀDĒJAIS
Programmatūras izstrāde

Top 10 Latvijā bāzēti programmatūras izstrādes uzņēmumi

Mūsu jaunākajā rakstā uzziniet vairāk par Latvijas labākajiem programmatūras izstrādes uzņēmumiem un to inovatīvajiem risinājumiem. Uzziniet, kā šie tehnoloģiju līderi var palīdzēt uzlabot jūsu biznesu.

thecodest
Uzņēmumu un mērogošanas risinājumi

Java programmatūras izstrādes pamati: A Guide to Outsourcing Successfully

Izpētiet šo būtisko rokasgrāmatu par veiksmīgu outsourcing Java programmatūras izstrādi, lai uzlabotu efektivitāti, piekļūtu speciālajām zināšanām un sekmīgi īstenotu projektus ar The Codest.

thecodest

Abonējiet mūsu zināšanu bāzi un saņemiet jaunāko informāciju par IT nozares pieredzi.

    Par mums

    The Codest - starptautisks programmatūras izstrādes uzņēmums ar tehnoloģiju centriem Polijā.

    Apvienotā Karaliste - Galvenā mītne

    • 303B birojs, 182-184 High Street North E6 2JA
      Londona, Anglija

    Polija - Vietējie tehnoloģiju centri

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polija

    The Codest

    • Sākums
    • Par mums
    • Pakalpojumi
    • Case Studies
    • Zināt, kā
    • Karjera
    • Vārdnīca

    Pakalpojumi

    • Tā Konsultatīvais dienests
    • Programmatūras izstrāde
    • Backend izstrāde
    • Frontend izveide
    • Staff Augmentation
    • Backend izstrādātāji
    • Mākoņa inženieri
    • Datu inženieri
    • Citi
    • QA inženieri

    Resursi

    • Fakti un mīti par sadarbību ar ārējo programmatūras izstrādes partneri
    • No ASV uz Eiropu: Kāpēc Amerikas jaunuzņēmumi nolemj pārcelties uz Eiropu?
    • Tehnoloģiju ārzonas attīstības centru salīdzinājums: Tech Offshore Eiropa (Polija), ASEAN (Filipīnas), Eirāzija (Turcija)
    • Kādi ir galvenie CTO un CIO izaicinājumi?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autortiesības © 2026 The Codest. Visas tiesības aizsargātas.

    lvLatvian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lt_LTLithuanian is_ISIcelandic lvLatvian