docker compose up

Tworzy i uruchamia usługi zdefiniowane w compose.yaml.

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, a Ctrl+C zatrzymuje kontenery.
  • --build — przebudowuje obrazy przed startem, nawet jeśli już istnieją (przydatne po zmianach w Dockerfile).
  • --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ługi web i uruchamia ją wraz z zależnościami. Idealne po zmianach w kodzie.
  • docker compose up -d --scale worker=3 — odpala trzy instancje usługi worker w 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.