[docker] 특정 컨테이너에만 도커 작성
나는이 docker-compose.yml
여러 컨테이너를 포함한다. 그중 3 개는 내 앱 (클라이언트, 서버 및 데이터베이스)을위한 것이고 나머지는 다양한 개발 도구 (예 : psql, npm, manage.py 등)를위한 것입니다. 내가 할 때 docker-compose up
그들 모두가 시작되었지만 세 가지 주요 시작 만 원합니다. 내가 지정한 링크로 인해 세 개만으로 시작할 수 docker-compose up client
있지만 출력은 하나의 컨테이너에서만 발생합니다. 따라서 다음 중 하나를 수행하는 방법이 있습니까?
- docker-compose에게 시작하여 어떤 컨테이너를 시작해야하는지 알려주십시오.
docker-compose up
- 연결된 모든 컨테이너에서 출력을 얻습니다.
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-compose
v1.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를 사용하면 앱 을 구성 하는 서비스 를 정의 할 수 있습니다. 및 단지 관리 명령입니다. 컨테이너가 필요하지 않습니다. 를 사용하여 데이터베이스 테이블을 작성 해야하는 경우 다음과 같이하면됩니다.npm
manage.py
manage.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