docker compose up to polecenie, które bierze definicję Twojego środowiska z pliku compose.yaml i ożywia ją: tworzy sieci, woluminy, pobiera lub buduje obrazy i odpala kontenery wszystkich usług naraz. Zamiast ręcznie klikać docker run dla bazy danych, backendu i frontendu osobno, opisujesz całość raz, a potem jedną komendą stawiasz cały stack. To podstawowe narzędzie do lokalnego developmentu i prostych wdrożeń, gdzie kilka serwisów musi działać razem.
Składnia i najważniejsze opcje
Podstawowa forma: docker compose up [OPTIONS] [SERVICE...]. Bez podania SERVICE uruchamiane są wszystkie usługi z pliku.
-d, --detach— uruchamia w tle i oddaje Ci terminal; bez tego logi lecą na ekran, aCtrl+Czatrzymuje kontenery.--build— przebudowuje obrazy przed startem, nawet jeśli już istnieją (przydatne po zmianach wDockerfile).--no-deps— nie startuje usług zależnych, tylko tę wskazaną.--force-recreate— odtwarza kontenery, nawet gdy konfiguracja się nie zmieniła.--remove-orphans— usuwa kontenery z usług, których już nie ma w pliku Compose.--scale SERVICE=N— uruchamia N instancji danej usługi.--wait— czeka, aż usługi będą w stanie running/healthy; sam włącza tryb detached.--abort-on-container-exit— zatrzymuje wszystkie kontenery, gdy którykolwiek się zakończy (nie łączysz tego z-d).--pull missing|always|never— kontroluje, kiedy ściągać obrazy z rejestru.
Przykłady użycia
docker compose up -d— stawia cały stack w tle i zwraca Ci wiersz poleceń. Najczęstszy wariant na co dzień.docker compose up --build web— przebudowuje obraz usługiwebi uruchamia ją wraz z zależnościami. Idealne po zmianach w kodzie.docker compose up -d --scale worker=3— odpala trzy instancje usługiworkerw tle, na przykład do obsługi kolejki zadań.docker compose up --remove-orphans— startuje stack i sprząta osierocone kontenery po usługach, które usunąłeś z pliku.docker compose up --abort-on-container-exit— uruchamia wszystko i ubija całość, gdy jeden kontener padnie. Wygodne w testach i CI.
Częste błędy i pułapki
Uruchomienie bez -d i zamknięcie terminala albo Ctrl+C zatrzyma kontenery — łatwo się na tym przejechać, gdy myślisz, że coś działa w tle. --build i --force-recreate to dwie różne rzeczy: pierwsze przebudowuje obraz, drugie odtwarza kontener; jeśli zmieniłeś tylko zmienne środowiskowe, --build nic nie da. Pamiętaj też, że --abort-on-container-exit jest niekompatybilne z -d — Compose nie pozwoli ich połączyć. Drobiazg historyczny: w starym świecie pisałeś docker-compose (z myślnikiem, osobny skrypt w Pythonie), dziś to wbudowany plugin docker compose (ze spacją) — flagi są niemal identyczne, ale stara wersja bywa już nierozwijana. I uważaj z --remove-orphans na współdzielonym hoście: usunie kontenery spoza bieżącego pliku, jeśli należą do tego samego projektu.
Powiązane komendy: docker compose down, docker compose build, docker compose ps, docker compose logs, docker compose restart.