[docker] 특정 컨테이너에만 도커 작성

나는이 docker-compose.yml여러 컨테이너를 포함한다. 그중 3 개는 내 앱 (클라이언트, 서버 및 데이터베이스)을위한 것이고 나머지는 다양한 개발 도구 (예 : psql, npm, manage.py 등)를위한 것입니다. 내가 할 때 docker-compose up그들 모두가 시작되었지만 세 가지 주요 시작 만 원합니다. 내가 지정한 링크로 인해 세 개만으로 시작할 수 docker-compose up client있지만 출력은 하나의 컨테이너에서만 발생합니다. 따라서 다음 중 하나를 수행하는 방법이 있습니까?

  1. docker-compose에게 시작하여 어떤 컨테이너를 시작해야하는지 알려주십시오. docker-compose up
  2. 연결된 모든 컨테이너에서 출력을 얻습니다. docker-compose up client


답변

다음을 사용하여 컨테이너를 시작할 수 있습니다.

$ docker-compose up -d client

백그라운드에서 컨테이너를 실행하고 출력을 사용할 수 있습니다.

$ docker-compose logs

시작된 모든 컨테이너로 구성됩니다.


답변

docker-compose 파일에 정의 된 특정 서비스를 시작합니다. 예를 들어 docker-compose.yml이있는 경우

sudo docker-compose start db

다음과 같은 작성 파일이 제공됩니다.

version: '3.3'

services:
   db:
     image: mysql:5.7
     ports:
       - "3306:3306"
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: yourPassword
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: yourPassword

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     volumes:
       - ./l3html:/var/www/html
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: yourPassword
volumes:
    db_data:
    l3html:

때로는 전체 제품군을 시작하기 전에 mySQL 만 시작하고 싶을 때도 있습니다 (때로는 데이터베이스를 채우려는 경우도 있음).


답변

아, 이것만으로 :

$ docker-compose up client server database


답변

좋은 해결책 중 하나는 다음과 같이 원하는 서비스 만 실행하는 것입니다.

docker-compose up --build $(<services.txt)

services.txt 파일은 다음과 같습니다.

services1 services2, etc

의존성 (depends_on) 인 경우 관련 서비스를 함께 실행해야합니다.

예를 들어 –build는 선택 사항입니다.


답변

docker-composev1.5 부터는 플래그를 사용하여 여러 docker-compose.yml파일-f전달할 수 있습니다 . 이를 통해 개발자 도구를 별도의 도구로 분할 docker-compose.yml한 다음 주문형 만 포함 할 수 있습니다.

# start and attach to all your essential services
docker-compose up

# execute a defined command in docker-compose.dev.yml
docker-compose -f docker-compose.dev.yml run npm update

# if your command depends_on a service you need to include both configs
docker-compose -f docker-compose.yml -f docker-compose.dev.yml run npm update

이에 대한 자세한 내용은 docker / compose # 1896을 참조하십시오 .

훨씬 더 편리하게 ( docker / compose # 7548 ) 이 기능을 추가하기 위해 풀 요청을 만들었지 만 compose 파일 사양을 변경해야하므로 이제 compose-spec / compose-spec # 에서 논의됩니다 . 87 .


답변

당신은 보통 이것을하고 싶지 않습니다. Docker Compose를 사용하면 앱 을 구성 하는 서비스 를 정의 할 수 있습니다. 및 단지 관리 명령입니다. 컨테이너가 필요하지 않습니다. 를 사용하여 데이터베이스 테이블을 작성 해야하는 경우 다음과 같이하면됩니다.npmmanage.pymanage.py

docker-compose run client python manage.py create_db

Heroku가 사용하는 일회성 dynos라고 생각하십시오.

이러한 관리 명령을 별도의 컨테이너로 처리해야하고 Docker Compose를 사용하려면 별도의 .yml파일을 작성하고 다음 명령으로 Docker Compose를 시작할 수 있습니다 .

docker-compose up -f my_custom_docker_compose.yml


답변