docker-compose start „BŁĄD: brak kontenerów do uruchomienia”

98

Próbuję użyć Docker Compose (z Docker Machine w systemie Windows), aby uruchomić grupę kontenerów Docker.

Mój docker-compose.yml:

version: '2'
services:
  postgres:
    build: ./postgres
    environment:
      - POSTGRES_PASSWORD=mysecretpassword
  frontend:
    build: ./frontend
    ports:
      - "4567:4567"
    depends_on:
      - postgres
  backend:
    build: ./backend
    ports:
       - "5000:5000"
    depends_on:
       - postgres

docker-compose builddziała pomyślnie. Po uruchomieniu docker-compose startotrzymuję następujące dane wyjściowe:

Starting postgres ... done
Starting frontend ... done
Starting backend ... done
ERROR: No containers to start

Potwierdziłem, że kontenery Dockera nie działają. Jak mam zacząć moje kontenery?

Prichmp
źródło

Odpowiedzi:

153

Problem polega na tym, że w rzeczywistości nie utworzyłeś kontenerów. Będziesz musiał utworzyć te kontenery przed ich uruchomieniem. Możesz użyć docker-compose upzamiast tego, który utworzy kontenery, a następnie je uruchomi.

Lub możesz uruchomić, docker-compose createaby utworzyć kontenery, a następnie uruchomić, docker-compose startaby je uruchomić.

JesusTinoco
źródło
4
Co robi docker-compose build?
Prichmp
8
docker-compose buildtworzy obrazy z pliku docker-compose.yml.
JesusTinoco
11
Zauważ, że docker-compose createjest to przestarzałe. Zamiast tego użyj uppolecenia z --no-start.
B12Toaster
24

Powodem, dla którego zobaczyłeś błąd, jest to docker-compose starti docker-compose restartzałożenie, że kontenery już istnieją.

Jeśli chcesz budować i uruchamiać kontenery, użyj

docker-compose up

Jeśli chcesz tylko zbudować kontenery, użyj

docker-compose up --no-start

Następnie docker-compose {start,restart,stop}powinno działać zgodnie z oczekiwaniami.

Kiedyś istniało docker-compose createpolecenie, ale teraz jest ono przestarzałe na rzecz docker-compose up --no-start.

Philipp Claßen
źródło