docker-compose start “ERROR: No containers to start”

97

Estou tentando usar o Docker Compose (com Docker Machine no Windows) para iniciar um grupo de contêineres do Docker.

Meu 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 buildé executado com sucesso. Quando eu executo docker-compose start, obtenho o seguinte resultado:

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

Eu confirmei que os contêineres do docker não estão funcionando. Como faço para iniciar meus contêineres?

Prichmp
fonte

Respostas:

149

O problema aqui é que você não criou os contêineres. Você terá que criar esses contêineres antes de executá-los. Em docker-compose upvez disso, você pode usar o , que criará os contêineres e os inicializará.

Ou você pode executar docker-compose createpara criar os contêineres e, em seguida, executar o docker-compose startpara iniciá-los.

JesusTinoco
fonte
4
O que docker-compose buildfazer?
Prichmp
8
docker-compose buildcria as imagens do arquivo docker-compose.yml.
JesusTinoco
10
Observe que docker-compose createestá obsoleto. Use o upcomando com --no-start.
B12Toaster de
23

O motivo pelo qual você viu o erro é docker-compose starte docker-compose restartpresume que os contêineres já existem.

Se você deseja construir e iniciar contêineres, use

docker-compose up

Se você deseja apenas construir os contêineres, use

docker-compose up --no-start

Depois, docker-compose {start,restart,stop}deve funcionar como esperado.

Costumava haver um docker-compose createcomando, mas agora ele está obsoleto e foi substituído por docker-compose up --no-start.

Philipp Claßen
fonte