Konteneryzacja za pomocą Dockera
Naucz się konteneryzować aplikacje Scala za pomocą Dockera, aby zapewnić spójne środowiska i uprościć wdrażanie.
Konteneryzacja za pomocą Dockera to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 3 lekcji w sumie.
Dlaczego konteneryzować aplikacje w Scali?
Podczas wdrażania aplikacji w Scali zapewnienie spójnego środowiska programistycznego, testowego i produkcyjnego może być trudne. Właśnie tutaj przydaje się konteneryzacja!
Kontener pakuje aplikację i wszystkie jej zależności (takie jak Java Virtual Machine, biblioteki i konfiguracja) w jedną, odizolowaną jednostkę. Dzięki temu aplikacja działa tak samo w każdym środowisku.
Docker: obrazy i kontenery
Docker to najpopularniejsza platforma do konteneryzacji. Wykorzystuje dwa podstawowe pojęcia:
- Obraz Docker: lekki, samodzielny i wykonywalny pakiet zawierający wszystko, co jest potrzebne do uruchomienia fragmentu oprogramowania, w tym kod, środowisko uruchomieniowe, narzędzia systemowe, biblioteki systemowe i ustawienia. Można go traktować jak schemat.
- Kontener Docker: uruchomiona instancja obrazu Docker. Po uruchomieniu obraz staje się kontenerem. Kontenery są od siebie oraz od systemu hosta odizolowane.
Pierwsze uruchomienie Dockera
Spróbujmy uruchomić bardzo prosty kontener Docker. To polecenie pobiera obraz hello-world (jeśli nie jest jeszcze dostępny) i uruchamia go jako kontener.
Zobaczysz komunikat potwierdzający, że Docker działa poprawnie!
docker run hello-world
Nasza prosta aplikacja Scala
Zanim umieścimy aplikację w kontenerze, utwórzmy minimalną aplikację Scala. Ten program po prostu wyświetli komunikat w konsoli.
Wkrótce spakujemy ją do obrazu Docker!
object Main extends App {
val message = "Hello from CoddyKit's Docker container!"
println(message)
}Schemat: Dockerfile
Dockerfile to plik tekstowy zawierający wszystkie polecenia, które można wywołać w wierszu poleceń w celu utworzenia obrazu. Można go porównać do przepisu na zbudowanie obrazu Docker.
Najważniejsze instrukcje to:
FROM: Ustawia obraz bazowy.WORKDIR: Ustawia katalog roboczy.COPY: Kopiuje pliki do obrazu.RUN: Wykonuje polecenia podczas budowania obrazu.CMD: Określa polecenie uruchamiane po starcie kontenera.
Dockerfile: etap budowania aplikacji Scala
W przypadku języka Scala często stosuje się budowanie wieloetapowe. W pierwszym etapie budujemy aplikację. Używamy obrazu OpenJDK z pełnym JDK, aby skompilować kod Scala.
# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.classDockerfile: etap uruchamiania aplikacji Scala
Drugi etap tworzy znacznie mniejszy obraz zawierający tylko JRE (Java Runtime Environment) oraz skompilowaną aplikację Scala (plik JAR). Dzięki temu końcowy obraz ma minimalny rozmiar.
# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]Kompletny Dockerfile dla aplikacji Scala
Oto pełny wieloetapowy Dockerfile dla naszej aplikacji Scala. Ten plik powinien mieć nazwę Dockerfile i znajdować się w tym samym katalogu co plik Main.scala.
# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.class
# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]Budowanie obrazu Docker
Skoro mamy już pliki Dockerfile i Main.scala, zbudujmy obraz Docker. Flaga -t nadaje obrazowi nazwę (np. scala-hello), a . wskazuje bieżący katalog jako kontekst budowania.
docker build -t scala-hello .
Uruchamianie aplikacji Scala w kontenerze
Po zbudowaniu obrazu można uruchomić aplikację Scala w kontenerze Docker za pomocą polecenia docker run. Spowoduje to wykonanie instrukcji CMD zdefiniowanej w pliku Dockerfile.
docker run scala-hello
W konsoli powinien zostać wyświetlony komunikat "Hello from CoddyKit's Docker container!"!
Sprawdź swoją wiedzę
Sprawdź, czy rozumiesz działanie plików Dockerfile.
Podsumowanie: umieszczanie aplikacji Scala w kontenerze
Udało się Państwu poznać podstawy umieszczania aplikacji Scala w kontenerze Docker!
- Obrazy Docker to schematy, a kontenery to ich uruchamialne instancje.
- Dockerfile to przepis na zbudowanie obrazu.
- Budowanie wieloetapowe pomaga tworzyć małe i wydajne obrazy dla aplikacji Scala.
- Polecenia takie jak
docker buildidocker runsłużą do zarządzania obrazami i kontenerami.
Ta wiedza ma kluczowe znaczenie dla spójnego i niezawodnego wdrażania mikrousług Scala.
Często zadawane pytania
Czy lekcja „Konteneryzacja za pomocą Dockera” jest bezpłatna?
Tak — pełny tekst „Konteneryzacja za pomocą Dockera” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 3 lekcji w sumie.
Co nauczysz się w „Konteneryzacja za pomocą Dockera”?
Naucz się konteneryzować aplikacje Scala za pomocą Dockera, aby zapewnić spójne środowiska i uprościć wdrażanie. Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?
Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.
Ile czasu zajmuje lekcja „Konteneryzacja za pomocą Dockera”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?
Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Projektowanie mikrousług w Scali
- Konteneryzacja za pomocą Dockera
- Strategie wdrażania w chmurze