Dowiedz się, jak za pomocą Dockera efektywnie pakować i wdrażać aplikacje Go, czyniąc je przenośnymi i łatwymi w zarządzaniu.
Docker jest najpopularniejszą technologią konteneryzacji ze względu na swoją prostotę i łatwość użycia. Docker łagodzi stres związany z problemami związanymi z przenośnością w rozwoju i dystrybucji oprogramowania. Kontenery platformy Docker można wdrożyć u większości dostawców usług w chmurze.
Konteneryzacja aplikacji Go za pomocą Dockera może pomóc w zapewnieniu spójnego i niezawodnego wdrażania w różnych środowiskach. Możesz wdrażać swoje aplikacje Go w różnych środowiskach, takich jak programowanie, przemieszczanie i produkcja. Kontenery Docker są lekkie i zajmują mniej miejsca niż tradycyjne maszyny wirtualne. Może to zaoszczędzić pieniądze na kosztach hostingu, a także przyspieszyć wdrażanie.
Konfigurowanie prostego serwera WWW w Go
Standardowa biblioteka Go zawiera pakiety potrzebne do skonfigurowania prostego serwera WWW.
Najpierw zaimportuj plik http, dziennik
, I json paczki. użyjesz Pakiet http Go skonfigurować serwer i DOSTAWAĆ zażądać punktu końcowego. The dziennik pakiet do logowania ewentualnych błędów do konsoli. The json do kodowania struktury do formatu JSON dla punktu końcowego interfejsu API.import (
„kodowanie/json”
"dziennik"
„sieć/http”
)
Możesz zakodować instancję struktury jako JSON dla klienta jako odpowiedź na podstawie ważności żądania w następujący sposób:
typ Wiadomość struktura {
Odpowiedź strunowy`json:"odpowiedź"`
Opis strunowy`json:"opis"`
}
Funkcja obsługi zwróci pomyślny komunikat do klienta, jeśli żądanie do punktu końcowego to a DOSTAWAĆ wniosek.
// dockerTestEndpoint obsługuje punkt końcowy API do testowania łączności Dockera
funkcjapunkt końcowy testu dokera(pisarz http. ResponseWriter, żądanie *http. Wniosek) {// Ustaw nagłówek odpowiedzi, aby wskazać zawartość JSON
pisarz. Nagłówek().Zestaw("Typ zawartości,""aplikacja/json")// Jeśli metodą żądania jest GET
Jeśli wniosek. Metoda == "DOSTAWAĆ" {// Ustaw kod stanu odpowiedzi na 200 OK
pisarz. Nagłówek zapisu (http. Stan OK)// Utwórz strukturę komunikatu dla pomyślnej odpowiedzi
wiadomość := Wiadomość{
Odpowiedź: "Udany",
Opis: „Pomyślnie trafiłeś w punkt końcowy interfejsu API” +
„Z Twojego kontenera Docker”,
}
// Zakoduj wiadomość jako JSON i wyślij ją jako odpowiedź
błąd:= json. NewEncoder (zapis).Encode(&message)
Jeśli błąd!= zero {
powrót
}
} w przeciwnym razie {// Jeśli metodą żądania nie jest GET
// Ustaw kod stanu odpowiedzi na 400 Bad Request
pisarz. Nagłówek zapisu (http. StatusBadRequest)// Utwórz strukturę komunikatu dla błędnej odpowiedzi na żądanie
wiadomość := Wiadomość{
Odpowiedź: "Zła prośba",
Opis: „Pomyślnie trafiłeś w punkt końcowy interfejsu API ze swojego” +
„Docker Container, ale złożyłeś złe żądanie”,
}
// Zakoduj wiadomość jako JSON i wyślij ją jako odpowiedź
błąd:= json. NewEncoder (zapis).Encode(&message)
Jeśli błąd!= zero {
powrót
}
}
}
Ustawiasz funkcję obsługi w funkcji main z trasą jako /api/docker/go. The punkt końcowy testu dokera funkcja obsługi sprawdza, czy żądanie do obsługi jest żądaniem GET. Jeśli jest to żądanie GET, koduje instancję Wiadomość struct do klienta na podstawie statusu żądania.
Oto jak możesz zamontować funkcję obsługi na trasie i skonfigurować serwer do działania na porcie 8080:
funkcjagłówny() {
// Zarejestruj funkcję obsługi „dockerTestEndpoint”
// do obsługi żądań adresu URL „/api/docker/go”.
http. HandleFunc("/api/docker/go", punkt końcowy testu dokera)
// Uruchom serwer HTTP i nasłuchuj żądań przychodzących na porcie 8080.
błąd := http. słuchaj i służ(":8080", zero)
Jeśli błąd!= zero {
dziennik. fatalny(„Wystąpił błąd serwera:”, błąd)
}
}
The główny funkcja jest punktem wejścia serwera, który nasłuchuje na porcie 8080. The Funkcja uchwytu Metoda montuje trasy w funkcji obsługi. The Słuchaj i służ Metoda uruchamia serwer na określonym lokalnym porcie hosta 8080.
Pierwsze kroki Konteneryzacja aplikacji Go za pomocą Dockera
Po zainstalowaniu i skonfigurowaniu Dockera będziesz potrzebować pliku Dockera o nazwie Dockerfile, aby utworzyć i zbudować obraz Dockera dla swojej aplikacji Go. Określisz polecenia dla obrazu podstawowego i polecenia do skopiowania plików, dodasz katalog roboczy i uruchomisz aplikację w pliku Dockerfile.
Uruchom to polecenie w terminalu swojego obszaru roboczego, aby utworzyć plik Dockerfile.
dotknij pliku Docker
Polecenia do budowania obrazu Dockera określisz w pliku Dockerfile.
Jeśli są jakieś pliki, które chcesz oddzielić od obrazu Dockera, możesz użyć a .dockerignore plik. The .dockerignore pliki działają dokładnie tak, jak gitignore akta.
dotknij .dockerignore
Następnie określisz polecenia kompilacji w pliku Docker, aby konteneryzować aplikacje.
Definiowanie poleceń w pliku Dockerfile
Pliki Docker można dostosowywać w oparciu o specyfikacje projektu. Zdefiniujesz polecenia do zbudowania obrazu bazowego do zbudowania aplikacji.
Oto przykład zawartości pliku Docker, który tworzy powyższy serwer WWW:
# Użyj obrazu podstawowego Golang
Z golang: najnowszy# Ustaw katalog roboczy wewnątrz kontenera
KIEROW.ROB /app# Kopiuje wszystkie pliki z katalogu lokalnego do katalogu roboczego w kontenerze
KOPIUJ. .# Pobierz zależności modułu Go
URUCHOMIĆ przejdź do pobierania modów# Zbuduj aplikację Go
URUCHOMIĆ idź zbudować aplikację -o
# Ustaw punkt wejścia dla aplikacji
PUNKT WEJŚCIA ["./aplikacja"]
Używa pliku Docker golang: najnowszy obraz podstawowy, aby zbudować aplikację po ustawieniu katalogu roboczego na /app.
Dockerfile kopiuje pliki z rozszerzeniem KOPIUJ polecenia i pobiera zależności z URUCHOMIĆ Komenda.
Plik określa operację budowania i uruchamiania z rozszerzeniem URUCHOMIĆ polecenie, a następnie ustawia polecenie do uruchomienia, gdy kontener zaczyna się od CMD Komenda.
Zapisz plik Dockerfile w tym samym katalogu co twój go.mod I main.go akta; następnie uruchom to polecenie, aby zbudować obraz Docker z tego pliku Docker:
docker build -t GolangTutorial .
Powyższe polecenie utworzy obraz Dockera z tagiem golangtutorial. Możesz uruchomić kontener za pomocą tego polecenia:
docker run -p 8080:8080 golangtutorial
Polecenie odwzorowuje port 8080 z kontenera na port 8080 na hoście lokalnym hosta. Możesz zażądać serwera działającego w kontenerze Docker z komputera hosta.
Oto wynik z wysłanie żądania CURL do serwera, tym razem działający na Dockerze:
Możesz użyć Docker Compose do orkiestracji kontenerów
Docker Compose to narzędzie, za pomocą którego można koordynować (pracować z wieloma) kontenerami Docker. Docker Compose umożliwia zdefiniowanie aplikacji wielokontenerowej w jednym pliku YAML. Możesz uruchomić i zarządzać całą aplikacją za pomocą jednego polecenia.
Możesz użyć Docker Compose do wdrażania złożonych aplikacji kontenerowych i zarządzania nimi. Docker Compose upraszcza zarządzanie dzięki zautomatyzowanym i spójnym wdrożeniom.