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: airKontrole 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_healthyNadpisywanie 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 reloadNazwane 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.localUruchamianie 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 containerInicjalizowanie 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.dProfile
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
- Wieloetapowe kompilacje Dockera dla Go
- Konfiguracja środowiska i sekrety
- Docker Compose w lokalnym środowisku programistycznym
- Kontrole kondycji i dostrajanie produkcyjne