Προσαρμόστε το Node.js REST API χρησιμοποιώντας την τεχνολογία κοντέινερ του Docker, η οποία απλοποιεί τη διαδικασία ανάπτυξης και διαχείρισης.

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

Ωστόσο, χρησιμοποιώντας την τεχνολογία κοντέινερ του Docker, μπορείτε να αναπτύξετε εφαρμογές σε διαφορετικά περιβάλλοντα με ελάχιστη προσπάθεια με όλες τις απαραίτητες εξαρτήσεις στην εικόνα του docker. Δηλαδή, δεν χρειάζεται να ανησυχείτε για την πραγματοποίηση οποιασδήποτε διαμόρφωσης. Αυτό καθιστά παιχνιδάκι τη διαδικασία ανάπτυξης και εκτέλεσης εφαρμογών σε διαφορετικά περιβάλλοντα.

Τι είναι το Docker;

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

instagram viewer

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

Πριν ξεκινήσετε, εγκαταστήστε το Docker στον τοπικό σας υπολογιστή. Ελέγξτε τις προϋποθέσεις της συγκεκριμένης πλατφόρμας και τις οδηγίες εγκατάστασης από την επίσημη τεκμηρίωση.

Δημιουργήστε ένα Node.js REST API

Για να ξεκινήσετε, δημιουργήστε έναν διακομιστή ιστού Node.js.

Μπορείτε να βρείτε τον κωδικό αυτής της εφαρμογής σε αυτήν Αποθετήριο GitHub.

Στη συνέχεια, εγκαταστήστε τα απαιτούμενα πακέτα για αυτό το έργο.

npm εγκατάσταση morgan pg knex

ο σελ Το πακέτο χρησιμοποιείται για τη δημιουργία σύνδεσης με μια βάση δεδομένων PostgreSQL. knex, από την άλλη πλευρά, παρέχει ένα απλό API για αλληλεπίδραση με την PostgreSQL — θα το χρησιμοποιήσετε για να γράψετε ερωτήματα SQL.

Τέλος, θα χρησιμοποιήσετε Morgan, ένα ενδιάμεσο λογισμικό που καταγράφει αιτήματα και απαντήσεις HTTP στην κονσόλα, για εντοπισμό σφαλμάτων και παρακολούθηση της εφαρμογής σας που εκτελείται σε ένα κοντέινερ Docker.

Τέλος, ανοίξτε το index.js αρχείο και προσθέστε τον κώδικα παρακάτω υλοποιεί ένα απλό REST API με τρεις διαδρομές.

συνθ εκφράζω = απαιτώ("εξπρές")
συνθ morgan = απαιτώ("morgan")
συνθ app = express()
συνθ db = απαιτώ("./db")
συνθ PORT = διεργασία.env. ΛΙΜΑΝΙ || 5000

app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ επεκτάθηκε: αληθής }))

app.get('/', (απαιτ., αναπ.) => res.send('Γειά σου Κόσμε!' ))

app.get('/χρήστες', ασυγχρονισμός (απαιτ., ανταπ.) => {
συνθ χρήστες = αναμένω db.select().from('χρήστες')
res.json (χρήστες)
})

app.post('/χρήστες', ασυγχρονισμός (απαιτ., ανταπ.) => {
συνθ χρήστης = αναμένω db('χρήστες').εισάγετε({ όνομα: req.body.name }).returning('*')
res.json (χρήστης)
})

app.listen (PORT, () => κονσόλα.κούτσουρο(`Διακομιστής στο PORT:${PORT}`))

Διαμορφώστε τη σύνδεση βάσης δεδομένων

Το REST API θα αλληλεπιδράσει με την παρουσία PostgreSQL του Docker, ωστόσο, πρέπει πρώτα να διαμορφώσετε τη σύνδεση της βάσης δεδομένων στην εφαρμογή σας. Στον ριζικό κατάλογο του φακέλου του έργου σας, δημιουργήστε ένα db.js αρχείο και προσθέστε τον παρακάτω κώδικα.

συνθ knex = απαιτώ('knex')
μονάδα μέτρησης.εξαγωγές = knex({
πελάτης: "postgres",
σύνδεση: {
πλήθος: 'db',
χρήστης: 'testUser',
Κωδικός πρόσβασης: 'mypassword123',
βάση δεδομένων: 'testUser',

},
})

Ρυθμίστε τα αρχεία migrate.js και seed.js

Αυτά τα δύο αρχεία θα καταστήσουν δυνατή τη δημιουργία ενός πίνακα στη βάση δεδομένων και τη συμπλήρωσή του με δεδομένα δοκιμής μέσω του API. Δημιουργία νέου φακέλου, σενάρια, στον ριζικό κατάλογο του έργου σας και προσθέστε δύο αρχεία: migrate.js και σπόρος.js.

Στο migrate.js αρχείο, προσθέστε τον παρακάτω κώδικα:

συνθ db = απαιτώ("../db");
(ασυγχρονισμός () => {
δοκιμάστε {
αναμένω db.schema.dropTableIfExists('χρήστες')
αναμένω db.schema.withSchema('δημόσιο').createTable('χρήστες', (πίνακας) => {
table.increments()
table.string('όνομα')
})
κονσόλα.κούτσουρο("Δημιουργήθηκε πίνακας χρηστών!")
process.exit(0)
} σύλληψη (λάθος) {
κονσόλα.log (σφάλμα)
process.exit(1)
}
})()

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

Στη συνέχεια, στο σπόρος.js αρχείο, προσθέστε τον παρακάτω κώδικα:

συνθ db = απαιτώ("../db");
(ασυγχρονισμός () => {
δοκιμάστε {
αναμένω db('χρήστες').εισάγετε({ όνομα: "Δοκιμή χρήστη 1" })
αναμένω db('χρήστες').εισάγετε({ όνομα: "Δοκιμή χρήστη 2" })
κονσόλα.κούτσουρο("Προστέθηκαν εικονικοί χρήστες!")
process.exit(0)
} σύλληψη (λάθος) {
κονσόλα.log (σφάλμα)
process.exit(1)
}
})()

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

Τέλος, προσθέστε αυτές τις εντολές στο δικό σας πακέτο.json αρχείο.

"σενάρια": {
"αρχή": "node index.js",
"αποδημώ": "node scripts/migrate.js",
"σπόρος": "node scripts/seed.js"

},

Εφόσον δεν έχετε διαμορφώσει πρόγραμμα-πελάτη, για να δοκιμάσετε το API, θα χρειαστεί να εκτελέσετε τα δύο αρχεία ως σενάρια μαζί με το npm τρέξιμο εντολή.

Ρυθμίστε ένα αρχείο Docker

Ένα Dockerfile ορίζει τις οδηγίες που απαιτούνται από τη μηχανή Docker για τη δημιουργία μιας εικόνας Docker. Στον ριζικό κατάλογο του έργου σας, δημιουργήστε ένα νέο αρχείο και ονομάστε το, Dockerfile. Στη συνέχεια, προσθέστε τις παρακάτω οδηγίες για να δημιουργήσετε μια εικόνα Docker για την εφαρμογή Node.js.

ΑΠΟ κόμβος:16.3.0-αλπικό3.13
ΔΙΕΥΘΥΝΤΗΣ ΕΡΓΑΣΙΑΣ /app
ΑΝΤΙΓΡΑΦΟ πακέτο*.json ./
ΤΡΕΞΙΜΟ npm εγκατάσταση
ΑΝΤΙΓΡΑΦΟ. .
ΕΚΘΕΣΕΙ8000
CMD [ "κόμβος", "index.js" ]

Ας το αναλύσουμε:

  • ΑΠΟ - Αυτή η οδηγία ορίζει τη βασική εικόνα για την εφαρμογή, η οποία είναι η εικόνα Node.js Alpine, μια ελαφριά έκδοση της εικόνας Node.js που μπορεί να βρεθεί στο μητρώο Docker.
  • ΔΙΕΥΘΥΝΤΗΣ ΕΡΓΑΣΙΑΣ - σκηνικά /app κατάλογο ως τον κατάλογο εργασίας.
  • ΑΝΤΙΓΡΑΦΟ πακέτο*.json./ - δίνει εντολή στο Docker να αντιγράψει όλα τα αρχεία με αυτήν τη μορφή ονόματος αρχείου από τον τρέχοντα κατάλογο στον /app ντοσιέ.
  • ΤΡΕΞΙΜΟ - εκτελεί και δημιουργεί την εικόνα.
  • ΑΝΤΙΓΡΑΦΟ.. - αντιγράφει τα αρχεία προέλευσης στο /app ντοσιέ.
  • ΕΚΘΕΣΕΙ - αυτό δίνει εντολή στο Docker να εκθέσει μια θύρα εντός του κοντέινερ στο εξωτερικό περιβάλλον, για αυτήν την περίπτωση, στον κεντρικό υπολογιστή.
  • CMD - καθορίζει την εντολή που θα εκτελεστεί όταν δημιουργείται το κοντέινερ Docker από την εικόνα.

Δημιουργήστε το αρχείο σύνθεσης Docker

Για να αλληλεπιδράσει η εφαρμογή Node.js με την παρουσία PostgreSQL του Docker, οι δύο εφαρμογές πρέπει να εκτελούνται σε κοντέινερ Docker μέσα στο ίδιο περιβάλλον δικτύου.

Για αυτόν τον λόγο, πρέπει να ορίσετε και να δημιουργήσετε τόσο την εικόνα της εφαρμογής όσο και την παρουσία PostgreSQL χρησιμοποιώντας Docker Compose — ένα εργαλείο που σας επιτρέπει να δημιουργείτε και να διαχειρίζεστε πολλαπλά κοντέινερ Docker.

Με απλά λόγια, χρησιμοποιώντας ένα Docker Compose, μπορείτε να ορίσετε τις υπηρεσίες που απαρτίζουν την εφαρμογή σας ως ενιαία ενότητα, για αυτήν την περίπτωση, το Node.js REST API και τη βάση δεδομένων PostgreSQL.

Δημιουργήστε ένα νέο αρχείο, docker-compose.yml, στον ριζικό κατάλογο και προσθέστε τον παρακάτω κώδικα:

εκδοχή:'3.9'

Υπηρεσίες:
υπηρέτης:
χτίζω:.
λιμάνια:
-'5000:5000'
εξαρτάται από:
-db
db:
εικόνα:"postgres"
λιμάνια:
-'4321:5432'
περιβάλλον:
POSTGRES_PASSWORD:'mypassword123'
POSTGRES_USER:'testUser'
τόμοι:
-data:/var/lib/postgresql/data

τόμοι:
δεδομένα:

Αυτός ο κώδικας θα δημιουργήσει και θα εκτελέσει δύο κοντέινερ Docker. Το πρώτο δοχείο, υπηρέτης, Το Docker Compose χρησιμοποιεί το Dockerfile για να δημιουργήσει την εικόνα για αυτό το κοντέινερ.

Καθορίζει επίσης ότι το κοντέινερ διακομιστή εξαρτάται από το db δοχείο. Εννοώντας, το υπηρέτης το δοχείο πρέπει να ξεκινήσει μετά την db δοχείο για σύνδεση με αυτό.

Το δεύτερο κοντέινερ είναι ένα κοντέινερ βάσης δεδομένων PostgreSQL. Δεν χρειάζεται να καθορίσετε ένα Dockerfile για αυτό το κοντέινερ, καθώς θα δημιουργηθεί από την εικόνα PostgreSQL στο μητρώο εικόνων του Docker.

Δημιουργήστε τις εικόνες Docker

Χρησιμοποιήστε την εντολή Docker Compose για να δημιουργήσετε τις εικόνες και να ξεκινήσετε τα δύο κοντέινερ.

docker-συνθέτω επάνω -δ

Θα πρέπει να δείτε μια παρόμοια απάντηση μετά την επιτυχή ολοκλήρωση της διαδικασίας.

Δοκιμάστε το REST API

Εκτελέστε την παρακάτω εντολή για να δοκιμάσετε το REST API που εκτελείται στο κοντέινερ Docker. Θα πρέπει να δημιουργήσει έναν πίνακα στη βάση δεδομένων PostgreSQL.

docker exec docker_node-server-1 npm εκτέλεση μετεγκατάστασης

Θα πρέπει να δείτε μια παρόμοια απάντηση.

Κοινή χρήση των εικόνων Docker

Το τελευταίο βήμα είναι η προώθηση της εικόνας Docker για την εφαρμογή Node.js στο Docker Hub. Αυτό είναι παρόμοιο με την προώθηση των έργων σας στο GitHub.

  • Κατευθυνθείτε προς Docker Hub και εγγραφείτε για λογαριασμό και συνδεθείτε στον πίνακα ελέγχου χρήστη.
  • Στη συνέχεια, κάντε κλικ στο Δημιουργήστε ένα αποθετήριο. Δώστε το όνομα του αποθετηρίου σας και ορίστε την ορατότητά του σε ένα από τα δύο Δημόσιο ή Ιδιωτικός και μετά κάντε κλικ Δημιουργώ.
  • Για να προωθήσετε την εικόνα Docker της εφαρμογής σας στο Docker Hub, πρέπει πρώτα να συνδεθείτε στον λογαριασμό σας μέσω του τερματικού και στη συνέχεια να δώσετε το όνομα χρήστη και τον κωδικό πρόσβασής σας.
σύνδεση στο docker
  • Στη συνέχεια, ενημερώστε το όνομα της εικόνας Docker ώστε να ταιριάζει με αυτήν τη μορφή: /. Εκτελέστε την παρακάτω εντολή για να κάνετε αυτήν την αλλαγή:
 ετικέτα docker /
  • Τέλος, σπρώξτε την εικόνα Docker σας.
 ώθηση λιμενεργατών /< όνομα repo>

Χρήση του Docker στην ανάπτυξη

Αυτός ο οδηγός άγγιξε μόνο ένα κλάσμα των δυνατοτήτων που μπορεί να προσφέρει το Docker. Ωστόσο, μπορείτε τώρα να χρησιμοποιήσετε την τεχνολογία κοντέινερ του Docker για να συσκευάσετε οποιαδήποτε εφαρμογή και όλες τις εξαρτήσεις της ως εικόνες που μπορούν να αναπτυχθούν σε διαφορετική ανάπτυξη, καθώς και περιβάλλοντα παραγωγής όπως το cloud χωρίς καμία λόξιγκας.