0Pricing
DevOps Bootcamp · Lekcja

Budowanie obrazów Docker za pomocą Jenkins

Skonfiguruj zadania Jenkins tak, aby automatycznie budowały i przesyłały obrazy Docker do rejestru po zmianach w kodzie.

Budowanie obrazów Docker za pomocą Jenkins to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 2 z 4. 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 DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Automatyzacja budowania obrazów Docker

Ręczne budowanie obrazów Docker może być powolne, niespójne i podatne na błędy. Jest to szczególnie widoczne w środowisku zespołowym lub przy częstych zmianach kodu.

Automatyzacja ma kluczowe znaczenie dla niezawodnego i wydajnego dostarczania oprogramowania. W tej lekcji nauczą się Państwo integrować Jenkins z Docker, aby automatyzować tworzenie i wysyłanie obrazów.

Budowanie obrazów Docker za pomocą Jenkins — ilustracja 1

Wymagania wstępne Jenkins i Docker

Aby Jenkins mógł budować obrazy Docker, musi komunikować się z demonem Docker. Oznacza to, że klient Docker musi być zainstalowany na maszynie lub agencie, na którym będzie uruchamiane zadanie Jenkins.

Potrzebne będą również:

  • Działający serwer Jenkins (z lekcji 1)
  • Dostęp do rejestru Docker (np. Docker Hub)
  • Przykładowa aplikacja i jej plik Dockerfile

Instalowanie Dockera na hoście Jenkins

Aby umożliwić Jenkinsowi wykonywanie poleceń Dockera, należy upewnić się, że Docker jest zainstalowany i skonfigurowany na serwerze lub agencie Jenkins. Użytkownik Jenkins często potrzebuje uprawnień do komunikowania się z demonem Dockera.

Oto sposób konfiguracji w systemie Linux:

sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkins

Zabezpieczanie danych uwierzytelniających rejestru

Aby przesyłać obrazy do rejestru Docker, Jenkins potrzebuje danych uwierzytelniających. Należy przechowywać je w bezpieczny sposób, a nie bezpośrednio w pliku Jenkinsfile ani w konfiguracji zadania.

Wbudowana funkcja Jenkins Credentials doskonale się do tego nadaje:

  • Przejdź do Manage Jenkins > Manage Credentials.
  • Dodaj nowe dane uwierzytelniające typu Username with password dla swojego rejestru Docker.
  • dockerhub-credentials), aby móc się do nich później odwoływać.

Przykładowa aplikacja Flask

Użyjmy bardzo prostej aplikacji Flask napisanej w Pythonie. Umieścimy ją w pliku o nazwie app.py. Aplikacja będzie wyświetlać podstawowy komunikat „Hello”.

Potrzebny będzie również plik requirements.txt, w którym określimy zależności Pythona.

# app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from CoddyKit!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

# requirements.txt
Flask==2.0.2

Tworzenie pliku Dockerfile

Następnie zdefiniujemy obraz Docker za pomocą pliku Dockerfile. Ten plik poinstruuje Dockera, jak zbudować obraz naszej aplikacji.

Umieść ten plik Dockerfile w tym samym katalogu co pliki app.py i requirements.txt.

# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]

Zadanie Jenkins: krok budowania

Skonfigurujmy teraz zadanie Jenkins typu Freestyle. W sekcji Build Steps dodaj krok Execute shell. To polecenie zbuduje obraz Docker.

Pamiętaj, aby zastąpić yourusername swoją nazwą użytkownika Docker Hub lub ścieżką do rejestru.

# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .

Zadanie Jenkins: krok logowania i przesyłania

Po zbudowaniu obrazu należy przesłać go do naszego rejestru Docker. Zwykle wymaga to zalogowania. Użyjemy danych uwierzytelniających zapisanych wcześniej.

Dodaj kolejny krok Execute shell. Jeśli konfiguracja jest prawidłowa, Jenkins wstrzyknie dane uwierzytelniające jako zmienne środowiskowe (np. DOCKER_USER, DOCKER_PASS).

# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latest

Automatyzacja wyzwalaczy budowania

Siła CI/CD wynika z automatyzacji. Jenkins może automatycznie uruchamiać zadania budowania i przesyłania na podstawie różnych zdarzeń:

  • SCM Polling: Jenkins okresowo sprawdza repozytorium Git pod kątem nowych commitów.
  • Webhooks: Dostawca Git (GitHub, GitLab, Bitbucket) wysyła powiadomienie do Jenkinsa za każdym razem, gdy kod zostanie przesłany.
  • Upstream Projects: Uruchomienie następuje po pomyślnym zakończeniu innego zadania Jenkins.

Testowanie zadania Jenkins

Po skonfigurowaniu kroków budowania i wyzwalaczy zapisz zadanie Jenkins. Możesz ręcznie uruchomić budowanie, aby je przetestować. Obserwuj dane wyjściowe konsoli i sprawdź, czy obraz Docker został pomyślnie zbudowany i przesłany.

Pomyślne wykonanie oznacza, że potok CI może teraz automatycznie tworzyć i przechowywać nowe obrazy Docker za każdym razem, gdy kod ulegnie zmianie!

Szybkie sprawdzenie

Skonfigurowano zadanie Jenkins, które buduje i przesyła obraz Docker. W repozytorium Git pojawiły się nowe zmiany kodu.

Podsumowanie: budowanie i przesyłanie

Świetnie! W tej lekcji nauczono się, jak:

  • przygotować środowisko Jenkins do pracy z Dockerem;
  • bezpiecznie zarządzać danymi uwierzytelniającymi rejestru Docker w Jenkins;
  • skonfigurować zadanie Jenkins do budowania obrazu Docker za pomocą pliku Dockerfile;
  • przesłać nowo zbudowany obraz do rejestru Docker;
  • zrozumieć różne sposoby uruchamiania automatycznych kompilacji.

Automatyzacja tych kroków jest podstawowym elementem ciągłej integracji i stanowi fundament ciągłego dostarczania!

Często zadawane pytania

Czy lekcja „Budowanie obrazów Docker za pomocą Jenkins” jest bezpłatna?

Tak — pełny tekst „Budowanie obrazów Docker za pomocą Jenkins” 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 DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Budowanie obrazów Docker za pomocą Jenkins”?

Skonfiguruj zadania Jenkins tak, aby automatycznie budowały i przesyłały obrazy Docker do rejestru po zmianach w kodzie. Ćwiczysz DevOps Bootcamp 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ąć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp 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 4.

Ile czasu zajmuje lekcja „Budowanie obrazów Docker za pomocą Jenkins”?

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 DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp 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

  1. Wprowadzenie do Jenkins
  2. Budowanie obrazów Docker za pomocą Jenkins
  3. Automatyczne wdrażanie za pomocą Jenkins
  4. Pipeline jako kod w Jenkins z użyciem Jenkinsfile
← Powrót do DevOps Bootcamp