(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': data().getTime(),įvykis:'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" programos diegimas naudojant "Amazon ECS" - The Codest
The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2019-03-24
Programinės įrangos kūrimas

"Rails" programos diegimas naudojant "Amazon ECS

The Codest

Marcin Doliwa

Software Engineer

Šioje pamokoje norėčiau parodyti, kaip įdiegti pavyzdinę "Rails" programą naudojant "Amazon Elastic Container Service" (ECS).

Sukurkime jį paleisdami bėgiai new sample-rails-app, tada sukuriamas pagrindinis valdiklio veiksmas bėgiai g valdiklis Welcome index ir nustatant maršrutus į šakninį kelią kaip ”šaknis į: welcome#index".

Siekiame, kad šis sveikinimo puslapis būtų įdiegtas naudojant ECS.

Sukurkite saugyklą naudodami "Amazon Elastic Container Registry" (ECR)

"Amazon" ECR yra konteinerių registras. Jį naudosime savo programų atvaizdams saugoti ir iš jo traukti, kad jie veiktų ECS.

Eikite į savo AWS skydelis, ieškokite Elastinga talpykla
Registras
ir spustelėkite Pradėkite. Pamatysite toliau pateiktą ekraną:

saugykla su "Amazon Elastic Container Registry

Sukursime privačią saugyklą ir pavadinsime ją sample-rails-app.

Saugykla yra, bet ji tuščia. Norime, kad joje būtų mūsų programos atvaizdas. Tai kitas žingsnis.

# mesti klaidas, jei Gemfile buvo pakeistas nuo Gemfile.lock

RUN bundle config --global frozen 1

WORKDIR /app

COPY Gemfile Gemfile.lock ./

Paleisti paketą įdiegti

COPY . .

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

Tuomet turėtume sukurti atvaizdą ir perkelti jį į ECR saugyklą.

Prieš tai iš anksto sukurkime turtą naudodami `rails assets:precompile`.

Dabar eikite į sukurtą saugyklą. Ekrano viršuje pamatysite Peržiūrėti stūmimo komandas mygtuką, kuriame pateikiama išsami informacija, kaip tai padaryti.

Mano atveju (Linux) paleidžiu jį su šiomis AWS instrukcijomis:

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

Įsitikinkite, kad naudotojui leidžiama atlikti šią operaciją. Savo naudotojui pridėjau "AmazonElasticContainerRegistryPowerUser" politiką, kuri atrodo taip:

{
    "Versija": "2012-10-17",
    "Pareiškimas": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Leidimas",
            "Action": [
                "ecr:GetRegistryPolicy",
                "ecr:DescribeRegistry",
                "ecr:GetAuthorizationToken",
                "ecr:DeleteRegistryPolicy",
                "ecr:PutRegistryPolicy",
                "ecr:PutReplicationConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Leidimas",
            "Action": "ecr:*",
            "Resource": "arn:aws:ecr:*:212516879399:repository/*"
        }
    ]
}

Parengtas "Docker" atvaizdas.

Paraiškų apkrovos balansavimo įrenginio kūrimas

Noriu, kad išorinis pasaulis galėtų prisijungti tik prie mano taikomųjų programų apkrovos balansavimo įrenginio. Jis perduos srautą konteineriams, kurie veikia mūsų ECS klasterio viduje.

Eikite į EC2 paslaugos -> Apkrovos balansavimas -> Apkrovos balansavimo įrenginiai, spustelėkite Sukurti apkrovos balansavimo įrenginį, pasirinkite Paraiškų apkrovos balansavimo įrenginys ir spustelėkite Sukurti mygtuką.

Nustatykite jo pavadinimą į sample-rails-app-alb, naudokite numatytąjį VPC ir pasirinkite visus jo potinklius.

Mums liko Saugumo grupės ir Klausytojai ir maršruto parinkimas skyriai.

Saugumo grupės

Sukursime naują apkrovos balansavimo įrenginio saugumo grupę. Ji veikia kaip ugniasienė; nustatysime įeinančio ir išeinančio srauto taisykles. Norime priimti įeinantį http srautą (TCP 80 prievadas) ir leisti visą išeinantį srautą. 

Norėdami tai padaryti, spustelėkite “Sukurti naują saugumo grupę” nuoroda.

Skyriuje “Pagrindinė informacija”, nustatykite pavadinimą ir aprašymą, palikite numatytąjį VPC.

Mano atveju - pavadinimas: “pavyzdys-rails-app-alb-sg”, aprašymas: “http iš išorės, visi iš vidaus”

Pridėkite įeinančią taisyklę, kurios tipas: HTTP ir šaltinis: "Anywhere-IPv4. Palikite išeinančias taisykles tokias, kokios jos yra.

Spustelėkite sukurti saugumo grupę, tada grįžkite į skirtuką, kuriame kūrėte taikomųjų programų apkrovos balansavimo įrenginį, atnaujinkite saugumo grupes ir pridėkite tą, kurią ką tik sukūrėme, pašalinkite numatytąją.

Klausytojai ir maršruto parinkimas

Šiame skirsnyje nustatysime, kur norime, kad apkrovos balansavimo įrenginys perduotų srautą. Palikite Klausytojas Protokolas ir Uostas kaip HTTP ir 80, nes būtent to norime, ir spustelėkite “Sukurti tikslinę grupę” nuoroda.

Nustatykite pavadinimą “sample-rails-app-alb-tg”. Pakeistas tik uosto numeris. Perduosime jį prievadui 3000, nes jis skirtas mūsų "Rails" programėlei. Nekreipkite dėmesio į kitą žingsnį (Registruoti tikslai) ir sukurkite tikslinę grupę.

Dabar grįžkite į skirtuką, kuriame kūrėme taikomųjų programų apkrovos balansavimo įrenginį, atnaujinkite tikslinę grupę ir pasirinkite tą, kurią ką tik sukūrėme.

Paruošėme savo programų apkrovos balansavimo įrenginį, dabar pasidarbuokime su ECS.

ECS klasterio kūrimas

Pamatysite daug bauginančių terminų - klasteris, užduotys, užduočių apibrėžimas, paslaugos. Kad būtų paprasčiau, galvokite apie klasterį kaip apie serverių (EC2 egzempliorių) grupę. Kiekviename iš jų paleidžiame užduotis, kurios yra tiesiog kartu veikiančių konteinerių grupė. Užduoties apibrėžtyje aprašoma, kurie konteineriai yra tam tikroje grupėje ir kokius išteklius norime jiems suteikti (atmintį, procesorių). Tarnybos stebi šias užduotis, kad įsitikintų, jog mūsų klasteryje visada veikia tinkamas sveikų užduočių skaičius.

Atsižvelgdami į tai, sukurkime savo klasterį.

Eikite į ECS puslapį ir spustelėkite Klasteriai nuorodą ir Sukurti klasterį mygtuką. Pasirinkite “EC2 + "Linux" tinklai” vieną ir spustelėkite Kitas žingsnis. 

Nustatykite klasterio pavadinimą “sample-rails-app-cluster”. Pasirinkite EC2 egzemplioriaus tipą, aš pasirinkau "t2-micro", nes jis yra nemokamos pakopos plane. Instancijų skaičių palikite 1. 

Skyriuje "Tinklas" naudokite numatytąjį VPC ir pasirinkite visus jo potinklius. Spustelėkite sukurti, šiek tiek palaukite ir vualia, sukurtas naujas ECS klasteris.

Užduoties apibrėžtis

Spustelėkite Užduočių apibrėžtys nuorodą, tada Sukurti naują užduoties apibrėžtį mygtuką. Pasirinkite EC2 parinktį ir spustelėkite Kitas žingsnis. Programa, kurią ketiname paleisti, yra labai paprasta, todėl mums reikia tik kelių parinkčių. 

Nustatyti Užduoties apibrėžtis pavadinimą į “sample-rails-app”, tada eikite tiesiai į Konteinerių apibrėžtys skyrių ir spustelėkite “Pridėti konteinerį”. Pavadinkite konteinerį kaip “sample-rails-app” ir nustatykite vaizdo vietą formatu “repozitorija-url/image:tag”. Naujame naršyklės skirtuke eikite į ECR ir nukopijuokite vaizdo URI. Mano atveju jis buvo: “212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest”.

Nustatykite rekomenduojamą 300-500 MB atminties ribą. Dabar pats sudėtingiausias dalykas - prievadų atvaizdavimas.

Mūsų programa paleidžiama konteinerio viduje 3000 prievado prieigoje. Taigi kaip konteinerio prievadą įrašykite 3000. Kaip prievadą įvesime 0, o tai iš esmės reiškia, kad bus pasirinktas atsitiktinis prievadas. Laimei, mūsų taikomųjų programų apkrovos balansavimo įrenginys žinos šį prievadų atvaizdavimą ir galės teisingai nukreipti srautą. Šioje vienoje instancijoje galime vykdyti net kelias užduotis. 

Pridėkite aplinkos kintamąjį RAILS_ENV ir nustatykite jį į gamyba.

Dabar spustelėkite Pridėti pridėti mūsų konteinerio apibrėžtį ir spustelėkite Sukurti užbaigti užduoties apibrėžimo sąranką.

Paslauga

Turime klasterį, apkrovos balansavimo įrenginį ir užduoties apibrėžtį. Dabar turime kaip nors paleisti šias užduotis savo klasteryje. Tai yra paslaugų užduotis. Eikite į naujai sukurtą klasterį, pasirinkite Paslaugos skirtuką ir spustelėkite Sukurti mygtuką. 

Nustatykite paleidimo tipą EC2, pridėkite pavadinimą “pavyzdys-rails-app-service”. Nustatykite užduočių skaičių 1 ir spustelėkite Kitas žingsnis. Šiame puslapyje pasirinkite radijo mygtuką Application Load Balancer ir pasirinkite esamą IAM vaidmenį. Skyriuje “Container to load balancer” (Konteineris apkrovai balansuoti) jau turėjote įvesti teisingą konteinerį “sample-rails-app:0:3000”, tada spustelėkite “Add to load balancer” (Pridėti prie apkrovos balansavimo įrenginio).”

Kaip “Production listener port” pasirinkite 80:HTTP; kaip tikslinės grupės pavadinimą naudokite tą, kurį sukūrėme anksčiau - “sample-rails-app-alb-tg” ir spustelėkite Kitas žingsnis. Palikite Automatinis mastelio keitimas parinktis, spustelėkite Kitas žingsnis ir Sukurti paslaugą.

Atnaujinti ECS saugumo grupę

Galite pereiti į sukurto klasterio puslapį ir patikrinti Užduotys skirtukai, turėtų būti vykdoma viena užduotis. Paslauga ją paleido. Dabar eikite į EC2 paslaugos puslapį, spustelėkite apkrovos balansavimo įrenginius ir peržiūrėkite mūsų taikomųjų programų apkrovos balansavimo įrenginio informaciją. Ten turėtumėte turėti jo DNS pavadinimą. Nukopijuokite jį ir atidarykite naršyklėje. Jis turėtų nukreipti jus į mūsų programą. Deja, gauname “504 šliuzo laiko pertrauka” klaida. 

Problema yra mūsų klasterio saugumo grupėje. Jos įeinančios taisyklės neleidžia srauto, gaunamo iš apkrovos balansavimo įrenginio. Norėdami ją ištaisyti, grįžkite į EC2 skydelį ir spustelėkite Saugumo grupės nuoroda. Yra nauja grupė, sukurta klasterio kūrimo proceso metu. Jos pavadinimas turėtų prasidėti “"EC2ContainerService-sample-rails-app-cluster”. Spustelėkite jį ir redaguokite įeinančias taisykles. Kadangi norime leisti bet kokį srautą iš mūsų VPC, eikite į “Amazon" VPC skydelį ir patikrinkite, koks yra jūsų VPC IPv4 CIDR. Nustatykite taisyklės tipą "Visas eismas”, o šaltinis - IPv4 CIDR. Išsaugokite šią taisyklę ir pabandykite įkelti balansavimo įrenginio DNS pavadinimą. 

Tikimės, kad matote taip pat, kaip ir aš 🙂

Skaityti daugiau

"GraphQL Ruby". O kaip dėl našumo?

Bėgiai ir kitos transporto priemonės

"Rails" kūrimas naudojant TMUX, "Vim", Fzf + Ripgrep

Susiję straipsniai

Išmaniojo telefono sveikatos priežiūros programėlės su širdies piktograma ir kylančia sveikatos diagrama, pažymėtos The Codest logotipu, iliustracija, vaizduojanti skaitmeninės sveikatos ir sveikatos technologijų sprendimus.
Programinės įrangos kūrimas

Sveikatos priežiūros programinė įranga: Sveikatos priežiūros paslaugos: tipai, naudojimo atvejai

Įrankiai, kuriais šiandien naudojasi sveikatos priežiūros organizacijos, nė iš tolo neprimena prieš kelis dešimtmečius naudotų popierinių kortelių. sveikatos priežiūros programinė įranga dabar padeda sveikatos sistemoms, pacientų priežiūrai ir šiuolaikiniam sveikatos priežiūros paslaugų teikimui klinikinėse ir...

GERIAUSIAS
Abstrakti mažėjančios stulpelinės diagramos su kylančia rodykle ir auksine moneta, simbolizuojančia ekonomiškumą arba taupymą, iliustracija. Viršutiniame kairiajame viršutiniame kampe pavaizduotas The Codest logotipas ir šūkis "In Code We Trust" šviesiai pilkame fone.
Programinės įrangos kūrimas

Kaip padidinti savo Dev komandą neprarandant produkto kokybės

Didinate savo kūrėjų komandą? Sužinokite, kaip augti neprarandant produkto kokybės. Šiame vadove aptariami ženklai, kad atėjo laikas didinti komandą, komandos struktūra, įdarbinimas, vadovavimas ir įrankiai - ir kaip The Codest gali...

GERIAUSIAS
Programinės įrangos kūrimas

Sukurkite ateičiai atsparias žiniatinklio programas: The Codest ekspertų komandos įžvalgos

Sužinokite, kaip The Codest puikiai kuria keičiamo dydžio interaktyvias žiniatinklio programas, naudodama pažangiausias technologijas ir užtikrindama vientisą naudotojų patirtį visose platformose. Sužinokite, kaip mūsų patirtis skatina skaitmeninę transformaciją ir verslo...

GERIAUSIAS
Programinės įrangos kūrimas

10 geriausių Latvijoje įsikūrusių programinės įrangos kūrimo įmonių

Naujausiame mūsų straipsnyje sužinokite apie geriausias Latvijos programinės įrangos kūrimo įmones ir jų inovatyvius sprendimus. Sužinokite, kaip šie technologijų lyderiai gali padėti pakelti jūsų verslo lygį.

thecodest
Įmonių ir didinimo sprendimai

"Java" programinės įrangos kūrimo pagrindai: A Guide to outsourcing Outsourcing Successfully

Išnagrinėkite šį esminį vadovą, kaip sėkmingai outsourcing "Java" programinę įrangą kurti, kad padidintumėte efektyvumą, įgytumėte patirties ir sėkmingai įgyvendintumėte projektus su The Codest.

thecodest

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

    The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

    Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

    Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

    lt_LTLithuanian
    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 lvLatvian is_ISIcelandic lt_LTLithuanian