CodeGym /Kursy /Docker SELF /Konfiguracja docker-compose.yml do uruchomienia wszystkic...

Konfiguracja docker-compose.yml do uruchomienia wszystkich usług

Docker SELF
Poziom 23 , Lekcja 3
Dostępny

4.1 Inicjalizacja

Na tym etapie skonfigurujemy plik compose.yaml, żeby uruchomić wszystkie serwisy naszej aplikacji multi-container. Plik compose.yaml będzie zawierał ustawienia dla frontendu, backendu i bazy danych, a także definicję sieci i woluminów.

Definiowanie wersji Docker Compose

Zaczniemy od wskazania wersji Docker Compose. W tym przykładzie używana jest wersja 3:

Yaml

version: '3'

4.2 Definiowanie usług

Usługa 1: Frontend (ReactJS)

Zdefiniujmy usługę dla frontendu, która będzie zbudowana z katalogu frontend i będzie dostępna na porcie 3000:

Yaml

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network

Usługa 2: Backend (Flask)

Zdefiniujmy usługę dla backendu, która będzie zbudowana z katalogu backend. Zależy ona od usługi bazy danych i będzie dostępna na porcie 5000:

Yaml

  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

Gdzie:

  • depends_on: wskazuje, że usługa backend zależy od usługi database. Oznacza to, że baza danych zostanie uruchomiona przed uruchomieniem backendu.
  • environment: konfiguruje zmienne środowiskowe dla połączenia z bazą danych.

Usługa 3: Database (PostgreSQL)

Zdefiniujmy usługę dla bazy danych, używając oficjalnego obrazu postgres:13. Skonfigurujemy zmienne środowiskowe do tworzenia bazy danych i danych uwierzytelniających użytkownika:

Yaml

  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data

Gdzie:

  • environment: konfiguruje zmienne środowiskowe do tworzenia bazy danych i użytkownika podczas uruchamiania kontenera.
  • volumes: łączy wolumen db-data do trwałego przechowywania danych.

4.3 Konfiguracja sieci i woluminów

Zdefiniujemy sieci i woluminy, które będą używane przez nasze serwisy:

Yaml

networks:
  task-network:
    driver: bridge
      
volumes:
  db-data:

Gdzie:

  • networks: definiuje sieć task-network z typem drivera bridge, która będzie używana do komunikacji między kontenerami.
  • volumes: definiuje wolumin db-data do przechowywania danych bazy danych.

4.4 Pełny plik docker-compose.yml

Teraz połączymy wszystkie części w jeden plik docker-compose.yml:

Yaml

version: '3'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network
        
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
        
  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data
        
networks:
  task-network:
    driver: bridge
        
volumes:
  db-data:

Wyjaśnienia dotyczące konfiguracji

  • build: wskazuje ścieżkę do katalogu z Dockerfile do budowy obrazu.
  • ports: otwiera porty na hoście, aby uzyskać dostęp do usług.
  • depends_on: wskazuje, że usługa zależy od innej, aby zapewnić odpowiednią kolejność uruchamiania.
  • environment: ustawia zmienne środowiskowe dla usług.
  • networks: definiuje sieć do komunikacji między kontenerami.
  • volumes: definiuje woluminy do trwałego przechowywania danych.

4.5 Uruchamianie aplikacji

Teraz, gdy plik compose.yaml jest skonfigurowany, możemy uruchomić wszystkie serwisy za pomocą jednej komendy:

Terminal

docker compose up

Ta komenda stworzy i uruchomi kontenery dla frontendu, backendu i bazy danych, używając ustawień zdefiniowanych w compose.yaml.

Sprawdzanie działania

Po uruchomieniu kontenerów upewnij się, że wszystkie serwisy działają poprawnie:

  1. Frontend: otwórz przeglądarkę i przejdź pod adres http://localhost:3000, aby sprawdzić działanie frontendu.
  2. Backend: otwórz przeglądarkę i przejdź pod adres http://localhost:5000, aby sprawdzić działanie backendu.
  3. Baza danych: upewnij się, że kontener bazy danych jest uruchomiony i dostępny przez połączenie sieciowe z backendem.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION