window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster υπάρχει ήδη') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Ανάπτυξη εφαρμογής Rails με το Amazon ECS - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2021-11-17
Ανάπτυξη λογισμικού

Ανάπτυξη εφαρμογής Rails με το Amazon ECS

The Codest

Marcin Doliwa

Software Engineer

Σε αυτό το σεμινάριο, θα ήθελα να σας δείξω πώς να αναπτύξετε ένα δείγμα εφαρμογής Rails χρησιμοποιώντας το Amazon Elastic Container Service (ECS).

Ας το δημιουργήσουμε εκτελώντας την εντολή rails new sample-rails-app, και στη συνέχεια δημιουργώντας μια βασική δράση ελεγκτή ράγες g ελεγκτής ευπρόσδεκτος δείκτης και ορίζοντας διαδρομές στη διαδρομή root ως `root to: welcome#index".

Στόχος μας είναι να δούμε αυτή τη σελίδα καλωσορίσματος να αναπτύσσεται με τη χρήση του ECS.

Δημιουργήστε ένα αποθετήριο με το Amazon Elastic Container Registry (ECR)

Amazon ECR είναι ένα μητρώο εμπορευματοκιβωτίων. Θα το χρησιμοποιήσουμε για να αποθηκεύσουμε τις εικόνες της εφαρμογής μας και να τις αντλήσουμε από αυτό ώστε να τρέξουν στο ECS.

Πηγαίνετε στο AWS πάνελ, αναζητήστε Ελαστικό εμπορευματοκιβώτιο
Μητρώο
και κάντε κλικ στο Ξεκινήστε. Θα δείτε την παρακάτω οθόνη:

αποθετήριο με το Amazon Elastic Container Registry

Θα δημιουργήσουμε ένα ιδιωτικό αποθετήριο και θα το ονομάσουμε sample-rails-app.

Το αποθετήριο υπάρχει, αλλά είναι άδειο. Θέλουμε να περιέχει την εικόνα της εφαρμογής μας. Αυτό είναι το επόμενο βήμα.

# ρίχνει σφάλματα αν το αρχείο Gemfile έχει τροποποιηθεί από το Gemfile.lock

RUN bundle config --global frozen 1

WORKDIR /app

COPY Gemfile Gemfile.lock ./

RUN bundle install

COPY .

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

Στη συνέχεια θα πρέπει να δημιουργήσουμε μια εικόνα και να την προωθήσουμε στο αποθετήριο ECR.

Πριν από αυτό, ας κάνουμε προμεταγλώττιση των στοιχείων ενεργητικού με το `rails assets:precompile`.

Τώρα, μεταβείτε στο αποθετήριο που δημιουργήθηκε. Στο πάνω μέρος της οθόνης, θα δείτε ένα Προβολή εντολών push με λεπτομέρειες για το πώς να το κάνετε αυτό.

Στην περίπτωσή μου (Linux), το τρέχω με αυτές τις οδηγίες του AWS:

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

Βεβαιωθείτε ότι ο χρήστης σας έχει την άδεια να εκτελεί αυτή τη λειτουργία. Πρόσθεσα την πολιτική AmazonElasticContainerRegistryPowerUser στον χρήστη μου, η οποία έχει την εξής μορφή:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ecr:GetRegistryPolicy",
                "ecr:DescribeRegistry",
                "ecr:GetAuthorizationToken",
                "ecr:DeleteRegistryPolicy",
                "ecr:PutRegistryPolicy",
                "ecr:PutReplicationConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "ecr:*",
            "Resource": "arn:aws:ecr:*:212516879399:repository/*"
        }
    ]
}

Έχουμε ετοιμάσει την εικόνα docker μας.

Δημιουργία του εξισορροπιστή φορτίου εφαρμογών

Θέλω ο εξωτερικός κόσμος να μπορεί να συνδεθεί μόνο στον Εξισορροπιστή Φορτίου Εφαρμογών μου. Αυτός θα περνάει την κυκλοφορία στα εμπορευματοκιβώτια που εκτελούνται μέσα στο σύμπλεγμα ECS μας.

Πηγαίνετε στο Υπηρεσίες EC2 -> Εξισορρόπηση φορτίου -> Εξισορροπιστές φορτίου, κάντε κλικ Δημιουργία Load Balancer, επιλέξτε Εξισορροπιστής φορτίου εφαρμογών και κάντε κλικ στο Δημιουργία κουμπί.

Ορίστε το όνομά του σε sample-rails-app-alb, χρησιμοποιήστε το προεπιλεγμένο VPC σας και επιλέξτε όλα τα υποδίκτυα του.

Μας έμειναν Ομάδες ασφαλείας και Ακροατές και δρομολόγηση τμήματα.

Ομάδες ασφαλείας

Θα δημιουργήσουμε μια νέα ομάδα ασφαλείας για τον εξισορροπητή φορτίου μας. Θα ορίσουμε τους κανόνες για την εισερχόμενη και την εξερχόμενη κυκλοφορία. Θέλουμε να δεχόμαστε την εισερχόμενη κυκλοφορία http (θύρα TCP 80) και να επιτρέπουμε όλη την εξερχόμενη κυκλοφορία. 

Για να το κάνετε αυτό, κάντε κλικ στο "Δημιουργία νέας ομάδας ασφαλείας" link.

Στην ενότητα "Βασικές λεπτομέρειες", ορίστε όνομα και περιγραφή, αφήστε την προεπιλεγμένη VPC.

Στην περίπτωσή μου - όνομα: "sample-rails-app-alb-sg", περιγραφή: "http από έξω, όλα από μέσα"

Προσθέστε τον εισερχόμενο κανόνα με Τύπο: HTTP και Πηγή: Οπουδήποτε-IPv4. Αφήστε τους κανόνες εξερχομένων ως έχουν.

Κάντε κλικ στο δημιουργία ομάδας ασφαλείας, και στη συνέχεια επιστρέψτε στην καρτέλα όπου δημιουργούσατε τον Application Load Balancer, ανανεώστε τις ομάδες ασφαλείας και προσθέστε αυτή που μόλις δημιουργήσαμε, αφαιρώντας την προεπιλεγμένη.

Ακροατές και δρομολόγηση

Σε αυτή την ενότητα, θα ορίσουμε πού θέλουμε να περνάει την κυκλοφορία ο εξισορροπητής φορτίου. Αφήστε το Ακροατής Πρωτόκολλο και Λιμάνι ως HTTP και 80, καθώς αυτό ακριβώς θέλουμε, και πατήστε "Δημιουργία ομάδας-στόχου" link.

Ορίστε το όνομα σε "sample-rails-app-alb-tg". Η μόνη αλλαγή είναι ο αριθμός θύρας. Θα το περάσουμε στη θύρα 3000, καθώς αυτή είναι η θύρα για την εφαρμογή μας Rails. Αγνοήστε το επόμενο βήμα (Εγγεγραμμένοι στόχοι) και δημιουργήστε την ομάδα-στόχο.

Τώρα επιστρέψτε στην καρτέλα όπου δημιουργούσαμε τον Application Load Balancer, ανανεώστε την ομάδα στόχων και επιλέξτε αυτήν που μόλις δημιουργήσαμε.

Έχουμε έτοιμο τον Application Load Balancer, τώρα ας παίξουμε με το ECS.

Δημιουργία μιας συστάδας ECS

Υπάρχουν πολλοί τρομακτικοί όροι που θα δείτε - συστάδα, εργασίες, ορισμός εργασιών, υπηρεσίες. Για να το κάνετε πιο απλό, σκεφτείτε τη συστάδα ως μια ομάδα διακομιστών (EC2 instances). Σε κάθε ένα από αυτά, εκτελούμε εργασίες, οι οποίες είναι απλώς μια ομάδα από κοντέινερ που εκτελούνται μαζί. Ο ορισμός των εργασιών περιγράφει ποια κοντέινερ βρίσκονται σε μια συγκεκριμένη ομάδα και ποιους πόρους θα θέλαμε να τους δώσουμε (μνήμη, cpu). Οι υπηρεσίες παρακολουθούν αυτές τις εργασίες για να διασφαλίζουν ότι υπάρχει πάντα σωστός αριθμός υγιών εργασιών που εκτελούνται στο σύμπλεγμα μας.

Έχοντας αυτό κατά νου, ας δημιουργήσουμε τη συστάδα μας.

Πηγαίνετε στη σελίδα ECS και κάντε κλικ στην επιλογή Συστάδες σύνδεση και Δημιουργία Cluster κουμπί. Επιλέξτε το "Δικτύωση EC2 + Linux" ένα και κάντε κλικ Επόμενο βήμα. 

Ορίστε το όνομα της συστάδας σε "sample-rails-app-cluster". Επιλέξτε τον τύπο της παρουσίασης EC2, εγώ πήρα την t2-micro, καθώς είναι διαθέσιμη στο πρόγραμμα Free Tier. Αφήστε τον αριθμό των instances ως 1. 

Στην ενότητα δικτύωσης, χρησιμοποιήστε το προεπιλεγμένο VPC σας και επιλέξτε όλα τα υποδίκτυα του. Κάντε κλικ στο create, περιμένετε λίγο και voila, έχουμε δημιουργήσει ένα νέο ECS Cluster.

Ορισμός εργασίας

Κάντε κλικ στο Ορισμοί εργασιών σύνδεσμο, τότε Δημιουργία νέου ορισμού εργασίας κουμπί. Επιλέξτε το EC2 και κάντε κλικ στο Επόμενο βήμα. Η εφαρμογή που θα τρέξουμε είναι πολύ απλή, οπότε χρειαζόμαστε μόνο μερικές επιλογές εδώ. 

Ορίστε Ορισμός εργασίας όνομα σε "sample-rails-app", τότε πηγαίνετε κατευθείαν στο Ορισμοί εμπορευματοκιβωτίων και κάντε κλικ στο "Προσθέστε δοχείο". Ονομάστε το εμπορευματοκιβώτιο ως "sample-rails-app", και ορίστε τη θέση της εικόνας με τη μορφή "repository-url/image:tag". Στη νέα καρτέλα του προγράμματος περιήγησης, μεταβείτε στο ECR για να αντιγράψετε το URI της εικόνας. Στην περίπτωσή μου, ήταν: "212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest".

Ρυθμίστε το όριο μνήμης στα συνιστώμενα 300-500MiB. Τώρα, το πιο δύσκολο πράγμα - χαρτογράφηση θυρών.

Η εφαρμογή μας εκτελείται μέσα σε ένα κοντέινερ στη θύρα 3000. Έτσι, βάλτε το 3000 ως θύρα του εμπορευματοκιβωτίου. Θα βάλουμε 0 ως θύρα υποδοχής, το οποίο ουσιαστικά σημαίνει ότι επιλέγει μια τυχαία θύρα. Ευτυχώς, ο Application Load Balancer μας θα γνωρίζει αυτή την αντιστοίχιση των θυρών και θα μπορεί να κατευθύνει σωστά την κυκλοφορία. Μπορούμε ακόμη και να εκτελέσουμε πολλαπλές εργασίες σε αυτή την ενιαία παρουσία. 

Προσθέστε τη μεταβλητή περιβάλλοντος RAILS_ENV και ρυθμίστε το σε παραγωγή.

Τώρα κάντε κλικ στο Προσθέστε για να προσθέσετε τον ορισμό του δοχείου μας και κάντε κλικ στο Δημιουργία για να ολοκληρώσετε τη ρύθμιση Task Definition.

Υπηρεσία

Έχουμε τη συστάδα μας, τον εξισορροπιστή φορτίου και τον ορισμό εργασιών. Τώρα πρέπει με κάποιο τρόπο να εκτελέσουμε αυτές τις εργασίες μέσα στη συστάδα μας. Αυτή είναι η δουλειά των υπηρεσιών. Πηγαίνετε στη νεοσύστατη συστάδα, επιλέξτε το Υπηρεσίες και κάντε κλικ στην καρτέλα Δημιουργία κουμπί. 

Ορίστε τον τύπο εκκίνησης σε EC2, προσθέστε το όνομα "sample-rails-app-service". Ορίστε τον αριθμό των εργασιών σε 1 και κάντε κλικ στο κουμπί Επόμενο βήμα. Σε αυτή τη σελίδα, επιλέξτε το κουμπί επιλογής Application Load Balancer και επιλέξτε τον υπάρχοντα ρόλο IAM για αυτόν. Στην ενότητα "Container to load balance", θα πρέπει να έχετε ήδη εισαγάγει ένα σωστό container "sample-rails-app:0:3000", και στη συνέχεια κάντε κλικ στο "Add to load balancer".

Για τη "θύρα ακροατή παραγωγής", επιλέξτε 80:HTTP.Ως όνομα ομάδας στόχου, χρησιμοποιήστε αυτό που δημιουργήσαμε προηγουμένως - "sample-rails-app-alb-tg" και κάντε κλικ στο Επόμενο βήμα. Αφήστε το Αυτόματη κλιμάκωση επιλογές ως έχουν, κάντε κλικ στο Επόμενο βήμα και Δημιουργία υπηρεσίας.

Ενημέρωση της ομάδας ασφαλείας του ECS

Μπορείτε να μεταβείτε στη σελίδα δημιουργημένης συστάδας και να ελέγξετε το Εργασίες καρτέλες, θα πρέπει να εκτελείται μία εργασία. Η Υπηρεσία την έχει ξεκινήσει. Τώρα μεταβείτε στη σελίδα της υπηρεσίας EC2, κάντε κλικ στο Load Balancers και δείτε τα στοιχεία του Application Load Balancer μας. Θα πρέπει να έχετε εκεί το όνομα DNS του. Αντιγράψτε το και ανοίξτε το στο πρόγραμμα περιήγησης. Θα πρέπει να σας κατευθύνει στην εφαρμογή μας. Δυστυχώς, εμφανίζεται το μήνυμα "504 χρονικό όριο πύλης" σφάλμα. 

Το πρόβλημα εντοπίζεται στην ομάδα ασφαλείας της συστάδας μας. Οι εισερχόμενοι κανόνες της δεν επιτρέπουν την εισερχόμενη κυκλοφορία από τον εξισορροπιστή φορτίου. Για να το διορθώσετε, επιστρέψτε στον πίνακα EC2 και κάντε κλικ στο κουμπί Ομάδες ασφαλείας σύνδεσμος. Υπάρχει μια νέα ομάδα που δημιουργήθηκε κατά τη διαδικασία δημιουργίας της συστάδας. Θα πρέπει να έχει όνομα που αρχίζει με "EC2ContainerService-sample-rails-app-cluster". Κάντε κλικ σε αυτό και επεξεργαστείτε τους κανόνες εισερχομένων. Καθώς θέλουμε να επιτρέψουμε οποιαδήποτε κίνηση από το VPC μας, μεταβείτε στον πίνακα Amazon VPC και ελέγξτε ποιο είναι το IPv4 CIDR του VPC σας. Ορίστε τον τύπο κανόνα σε "Όλη η κυκλοφορία" και η πηγή σε IPv4 CIDR. Αποθηκεύστε αυτόν τον κανόνα και προσπαθήστε να φορτώσετε το όνομα DNS του εξισορροπητή. 

Ας ελπίσουμε ότι βλέπετε όπως κι εγώ 🙂

Διαβάστε περισσότερα

GraphQL Ruby. Τι γίνεται με τις επιδόσεις;

Σιδηρόδρομοι και άλλα μέσα μεταφοράς

Ανάπτυξη Rails με TMUX, Vim, Fzf + Ripgrep

Σχετικά άρθρα

Ανάπτυξη λογισμικού

Κατασκευάστε μελλοντικά ασφαλείς εφαρμογές Web: γνώσεις από την ομάδα εμπειρογνωμόνων του The Codest

Ανακαλύψτε πώς η The Codest υπερέχει στη δημιουργία κλιμακούμενων, διαδραστικών εφαρμογών ιστού με τεχνολογίες αιχμής, παρέχοντας απρόσκοπτη εμπειρία χρήστη σε όλες τις πλατφόρμες. Μάθετε πώς η τεχνογνωσία μας οδηγεί στον ψηφιακό μετασχηματισμό και την επιχειρηματική...

THECODEST
Ανάπτυξη λογισμικού

Top 10 εταιρείες ανάπτυξης λογισμικού με έδρα τη Λετονία

Μάθετε για τις κορυφαίες εταιρείες ανάπτυξης λογισμικού της Λετονίας και τις καινοτόμες λύσεις τους στο τελευταίο μας άρθρο. Ανακαλύψτε πώς αυτοί οι τεχνολογικοί ηγέτες μπορούν να βοηθήσουν στην ανύψωση της επιχείρησής σας.

thecodest
Λύσεις Enterprise & Scaleups

Βασικά στοιχεία ανάπτυξης λογισμικού Java: Α Guide to Outsourcing Successfully (Οδηγός για την επιτυχή εξωτερική ανάθεση)

Εξερευνήστε αυτόν τον βασικό οδηγό για την επιτυχή ανάπτυξη λογισμικού outsourcing Java για να αυξήσετε την αποδοτικότητα, να αποκτήσετε πρόσβαση στην τεχνογνωσία και να οδηγήσετε την επιτυχία των έργων με The Codest.

thecodest
Ανάπτυξη λογισμικού

Ο απόλυτος οδηγός για το Outsourcing στην Πολωνία

Η έξαρση της outsourcing στην Πολωνία οφείλεται στις οικονομικές, εκπαιδευτικές και τεχνολογικές εξελίξεις, που ευνοούν την ανάπτυξη της πληροφορικής και το φιλικό προς τις επιχειρήσεις κλίμα.

TheCodest
Λύσεις Enterprise & Scaleups

Ο πλήρης οδηγός εργαλείων και τεχνικών ελέγχου πληροφορικής

Οι έλεγχοι ΤΠ διασφαλίζουν ασφαλή, αποτελεσματικά και συμβατά συστήματα. Μάθετε περισσότερα για τη σημασία τους διαβάζοντας ολόκληρο το άρθρο.

The Codest
Jakub Jakubowicz CTO & Συνιδρυτής

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek