0Pricing
Go Academy · Lekcja

Docker Compose w lokalnym środowisku programistycznym

Łączenie usługi Go z PostgreSQL i Redis

Docker Compose w lokalnym środowisku programistycznym to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 3 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 Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.

Dlaczego Docker Compose?

Docker Compose orkiestruje wiele kontenerów (aplikację, bazę danych, pamięć podręczną, brokera komunikatów) na potrzeby lokalnego programowania, odtwarzając środowisko podobne do produkcyjnego bez konieczności ręcznej konfiguracji usług.

Struktura docker-compose.yml

Zdefiniuj usługi, sieci i wolumeny w pliku YAML:

services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      - DATABASE_URL=postgres://app:pass@db/mydb
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Automatyczne ponowne ładowanie za pomocą Air

Używaj github.com/air-verse/air do automatycznego ponownego ładowania podczas programowania. Zamontuj kod źródłowy w kontenerze i uruchamiaj air zamiast pliku binarnego:

app:
  volumes:
    - .:/app
  command: air

Kontrole stanu

Zdefiniuj kontrole stanu, aby depends_on czekało, aż baza danych będzie rzeczywiście gotowa, a nie tylko uruchomiona:

db:
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U app"]
    interval: 5s
    timeout: 3s
    retries: 5
app:
  depends_on:
    db:
      condition: service_healthy

Nadpisywanie ustawień środowiska

Używaj pliku docker-compose.override.yml (automatycznie scalany) dla ustawień przeznaczonych wyłącznie lokalnie, zachowując bazowy plik w czystości na potrzeby CI:

# docker-compose.override.yml
services:
  app:
    volumes: [".:/app"]  # source mount for live reload

Nazwane sieci

Umieść usługi we wspólnej, niestandardowej sieci, aby umożliwić wykrywanie usług za pomocą DNS na podstawie nazwy usługi:

networks:
  backend:
    driver: bridge
services:
  app:
    networks: [backend]
  db:
    networks: [backend]

Pliki środowiskowe

Używaj klucza env_file do wczytywania plików .env do kontenera, dzięki czemu sekrety nie trafiają do pliku YAML:

app:
  env_file: .env.local

Uruchamianie poleceń

Typowe polecenia Compose:

docker compose up -d      # start in background
docker compose down -v    # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in container

Inicjalizowanie bazy danych

Zamontuj pliki inicjalizujące SQL w katalogu /docker-entrypoint-initdb.d obrazu postgres — zostaną wykonane podczas pierwszego utworzenia kontenera:

db:
  volumes:
    - ./migrations:/docker-entrypoint-initdb.d

Profile

Używaj profili Compose, aby uruchamiać opcjonalne usługi (np. stos monitorowania) tylko wtedy, gdy są potrzebne:

services:
  grafana:
    profiles: ["monitoring"]

Compose w CI

Uruchamiaj testy integracyjne z użyciem rzeczywistych usług w CI za pomocą Compose. GitHub Actions natywnie obsługuje Docker Compose; używaj kontroli stanu, aby czekać na gotowość usług.

Szybkie sprawdzenie

Jak zapewnić, aby kontener aplikacji czekał w Docker Compose na gotowość bazy danych?

Podsumowanie: Docker Compose

Najważniejsze informacje:

  • docker-compose.yml definiuje wszystkie usługi, sieci i wolumeny
  • depends_on + healthcheck zapewniają gotowość usług
  • Pliki nadpisujące służą do ustawień lokalnego programowania; env_file służy do sekretów
  • Air zapewnia automatyczne ponowne ładowanie; zamontuj kod źródłowy jako wolumen

Często zadawane pytania

Czy lekcja „Docker Compose w lokalnym środowisku programistycznym” jest bezpłatna?

Tak — pełny tekst „Docker Compose w lokalnym środowisku programistycznym” 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 Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Docker Compose w lokalnym środowisku programistycznym”?

Łączenie usługi Go z PostgreSQL i Redis Ćwiczysz Go Academy 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ąć Go Academy?

Nie wymagamy żadnego doświadczenia. Go Academy 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 3 z 4.

Ile czasu zajmuje lekcja „Docker Compose w lokalnym środowisku programistycznym”?

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 Go Academy?

Tak. Każda lekcja Go Academy 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. Wieloetapowe kompilacje Dockera dla Go
  2. Konfiguracja środowiska i sekrety
  3. Docker Compose w lokalnym środowisku programistycznym
  4. Kontrole kondycji i dostrajanie produkcyjne
← Powrót do Go Academy