Μάθετε πώς να χρησιμοποιείτε το Docker για να πακετάρετε και να αναπτύξετε αποτελεσματικά τις εφαρμογές Go σας, καθιστώντας τις φορητές και εύκολες στη διαχείριση.

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

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

Ρύθμιση απλού διακομιστή Web in Go

Η τυπική βιβλιοθήκη Go περιέχει τα πακέτα που θα χρειαστείτε για να ρυθμίσετε έναν απλό διακομιστή ιστού.

instagram viewer

Πρώτα, εισάγετε το http, κούτσουρο, και json πακέτα. θα χρησιμοποιήσετε Το πακέτο http της Go για να ρυθμίσετε τον διακομιστή και ΠΑΙΡΝΩ αίτημα για τελικό σημείο. ο κούτσουρο πακέτο για την καταγραφή πιθανών σφαλμάτων στην κονσόλα σας. ο json πακέτο για την κωδικοποίηση μιας δομής σε JSON για το τελικό σημείο API.

εισαγωγή (
"encoding/json"
"κούτσουρο"
"net/http"
)

Μπορείτε να κωδικοποιήσετε μια παρουσία δομής ως JSON στον πελάτη ως απάντηση με βάση την εγκυρότητα του αιτήματος ως εξής:

τύπος Μήνυμα struct {
Απάντηση σειρά`json:"response"`
Περιγραφή σειρά`json:"περιγραφή"`
}

Η συνάρτηση χειριστή θα επέστρεφε ένα επιτυχημένο μήνυμα στον πελάτη εάν το αίτημα στο τελικό σημείο είναι α ΠΑΙΡΝΩ αίτηση.

// dockerTestEndpoint χειρίζεται το τελικό σημείο API για τον έλεγχο της συνδεσιμότητας Docker
funcdockerTestEndpoint(συγγραφέας http. ResponseWriter, αίτημα *http. Αίτηση) {

// Ορίστε την κεφαλίδα απόκρισης ώστε να υποδεικνύει περιεχόμενο JSON
συγγραφέας. Header().Set("Τύπος περιεχομένου,""application/json")

// Εάν η μέθοδος αιτήματος είναι GET
αν αίτηση. Μέθοδος == "ΠΑΙΡΝΩ" {

// Ορίστε τον κωδικό κατάστασης απόκρισης σε 200 OK
συγγραφέας. WriteHeader (http. Κατάσταση ΟΚ)

// Δημιουργήστε μια δομή μηνύματος για μια επιτυχημένη απάντηση
μήνυμα := Μήνυμα{
Απάντηση: "Επιτυχής",
Περιγραφή: "Έχετε φτάσει με επιτυχία στο τελικό σημείο του API" +
"Από το Docker Container σας",
}
// Κωδικοποιήστε το μήνυμα ως JSON και στείλτε το ως απάντηση
err := json. NewEncoder (συγγραφέας).Encode(&message)
αν λάθος!= μηδέν {
ΕΠΙΣΤΡΟΦΗ
}
} αλλού {

// Εάν η μέθοδος αιτήματος δεν είναι GET
// Ορίστε τον κωδικό κατάστασης απόκρισης σε 400 Bad Request
συγγραφέας. WriteHeader (http. StatusBadRequest)

// Δημιουργήστε μια δομή μηνύματος για μια κακή απάντηση αιτήματος
μήνυμα := Μήνυμα{
Απάντηση: "Κακό αίτημα",
Περιγραφή: "Έχετε φτάσει με επιτυχία το τελικό σημείο API Από το " +
"Docker Container, αλλά έκανες ένα κακό αίτημα",
}

// Κωδικοποιήστε το μήνυμα ως JSON και στείλτε το ως απάντηση
err := json. NewEncoder (συγγραφέας).Encode(&message)
αν λάθος!= μηδέν {
ΕΠΙΣΤΡΟΦΗ
}
}
}

Ρυθμίζετε τη λειτουργία χειριστή στην κύρια λειτουργία με τη διαδρομή ως /api/docker/go. ο dockerTestEndpoint Η λειτουργία χειριστή επικυρώνει ότι το αίτημα προς τον χειριστή είναι αίτημα GET. Εάν πρόκειται για αίτημα GET, κωδικοποιεί ένα στιγμιότυπο Μήνυμα struct παράδειγμα στον πελάτη με βάση την κατάσταση του αιτήματος.

Δείτε πώς μπορείτε να προσαρτήσετε τη λειτουργία χειριστή σε μια διαδρομή και να ρυθμίσετε τον διακομιστή ώστε να λειτουργεί στη θύρα 8080:

funcκύριος() {
// Καταχωρίστε τη συνάρτηση χειριστή 'dockerTestEndpoint'
// για τη διαχείριση αιτημάτων για τη διεύθυνση URL "/api/docker/go".
http. HandleFunc("/api/docker/go", dockerTestEndpoint)

// Εκκινήστε τον διακομιστή HTTP και ακούστε τα εισερχόμενα αιτήματα στη θύρα 8080.
λάθος := http. ListenAndServe(":8080", μηδέν)
αν λάθος!= μηδέν {
κούτσουρο. Fatalln("Υπάρχει σφάλμα με τον διακομιστή:", λάθος)
}
}

ο κύριος Η λειτουργία είναι το σημείο εισόδου του διακομιστή, το οποίο ακούει στη θύρα 8080. ο HandleFunc μέθοδος προσαρτά τις διαδρομές στη λειτουργία χειριστή. ο ListenAndServe μέθοδος ξεκινά τον διακομιστή στην καθορισμένη τοπική θύρα κεντρικού υπολογιστή 8080.

Ξεκινώντας Συναρμολόγηση των εφαρμογών Go με το Docker

Μετά την εγκατάσταση και τη ρύθμιση του Docker, θα χρειαστείτε ένα αρχείο Docker με το όνομα Dockerfile για να δημιουργήσετε και να δημιουργήσετε μια εικόνα Docker για την εφαρμογή Go σας. Θα καθορίσετε εντολές για τη βασική εικόνα και εντολές για την αντιγραφή των αρχείων, την προσθήκη του καταλόγου εργασίας και την εκτέλεση της εφαρμογής στο Dockerfile.

Εκτελέστε αυτήν την εντολή στο τερματικό του χώρου εργασίας σας για να δημιουργήσετε ένα αρχείο Docker.

αγγίξτε Dockerfile

Θα καθορίσετε τις εντολές για τη δημιουργία της εικόνας Docker στο Dockerfile.

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

αγγίζω .dockerignore

Στη συνέχεια, θα καθορίσετε εντολές δημιουργίας στο Dockerfile σας για να διαμορφώσετε τις εφαρμογές σας σε κοντέινερ.

Καθορισμός εντολών στο αρχείο Docker

Τα Dockerfiles προσαρμόζονται με βάση τις προδιαγραφές του έργου σας. Θα ορίσετε εντολές για τη δημιουργία της βασικής εικόνας για τη δημιουργία της εφαρμογής.

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

# Χρησιμοποιήστε μια εικόνα βάσης Golang
ΑΠΟ golang: πιο πρόσφατο

# Ορίστε τον κατάλογο εργασίας μέσα στο κοντέινερ
ΔΙΕΥΘΥΝΤΗΣ ΕΡΓΑΣΙΑΣ /app

# Αντιγράφει όλα τα αρχεία στον τοπικό κατάλογο στον κατάλογο εργασίας στο κοντέινερ
ΑΝΤΙΓΡΑΦΟ. .

# Κατεβάστε τις εξαρτήσεις της μονάδας Go
ΤΡΕΞΙΜΟ go mod λήψη

# Δημιουργήστε την εφαρμογή Go
ΤΡΕΞΙΜΟ πηγαίνετε build -o app

# Ορίστε το σημείο εισόδου για την εφαρμογή
ΣΗΜΕΙΟ ΕΙΣΟΔΟΥ ["./app"]

Το Dockerfile χρησιμοποιεί golang: πιο πρόσφατο εικόνα βάσης, για να δημιουργήσετε την εφαρμογή αφού ρυθμίσετε τον κατάλογο εργασίας σε /app.

Το Dockerfile αντιγράφει τα αρχεία με το ΑΝΤΙΓΡΑΦΟ εντολή και κατεβάζει εξαρτήσεις με το ΤΡΕΞΙΜΟ εντολή.

Το αρχείο καθορίζει μια λειτουργία δημιουργίας και εκτέλεσης με το ΤΡΕΞΙΜΟ εντολή και, στη συνέχεια, ορίζει την εντολή να εκτελείται όταν το κοντέινερ ξεκινά με το CMD εντολή.

Αποθηκεύστε το Dockerfile στον ίδιο κατάλογο με τον δικό σας go.mod και main.go αρχεία? στη συνέχεια εκτελέστε αυτήν την εντολή για να δημιουργήσετε μια εικόνα Docker από αυτό το Dockerfile:

docker build -t GolangTutorial .

Η παραπάνω εντολή θα δημιουργήσει μια εικόνα Docker με την ετικέτα golangtutorial. Μπορείτε να εκτελέσετε ένα κοντέινερ με αυτήν την εντολή:

docker run -p 8080:8080 golangtutorial

Η εντολή αντιστοιχίζει τη θύρα 8080 από το κοντέινερ στη θύρα 8080 στον τοπικό κεντρικό υπολογιστή του υπολογιστή κεντρικού υπολογιστή. Μπορείτε να ζητήσετε τον διακομιστή που εκτελείται στο κοντέινερ Docker από τον κεντρικό υπολογιστή.

Εδώ είναι το αποτέλεσμα από αποστολή του αιτήματος CURL στον διακομιστή, αυτή τη φορά τρέχει στο Docker:

Μπορείτε να χρησιμοποιήσετε το Docker Compose για ενορχήστρωση κοντέινερ

Το Docker Compose είναι ένα εργαλείο που μπορείτε να χρησιμοποιήσετε για να ενορχηστρώσετε (συνεργαστείτε με πολλά) κοντέινερ Docker. Το Docker Compose σάς επιτρέπει να ορίσετε μια εφαρμογή πολλαπλών κοντέινερ σε ένα μόνο αρχείο YAML. Μπορείτε να εκτελέσετε και να διαχειριστείτε ολόκληρη την εφαρμογή με μία μόνο εντολή.

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