programing

특정 컨테이너에 대해서만 도커 포장

lastcode 2023. 8. 5. 10:17
반응형

특정 컨테이너에 대해서만 도커 포장

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

  1. 도커에게 어떤 용기가 시작되어야 하는지 알려줍니다.docker-compose up
  2. 연결된 모든 컨테이너에서 출력 가져오기docker-compose up client

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

$ docker-compose up -d client

이렇게 하면 컨테이너가 백그라운드에서 실행되고 출력은 다음에서 사용할 수 있습니다.

$ docker-compose logs

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

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

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만 시작하고 싶을 때가 있습니다(때로는 데이터베이스만 작성하려는 경우도 있습니다).

갱신하다

1.28.0부터 새로운 서비스 프로필이 이를 위해 만들어졌습니다!와 함께profiles서비스를 특정 프로필에서만 시작하도록 표시할 수 있습니다.

services:
  client:
    # ...
  db:
    # ...
  npm:
    profiles: ["cli-only"]
    # ...
docker-compose up # start main services, no npm
docker-compose run --rm npm # run npm service
docker-compose --profile cli-only up # start main and all "cli-only" services

원답

v1.5부터는 플래그가 있는 여러 파일을 전달할 수 있습니다.이를 통해 개발 도구를 별도로 분할할 수 있습니다.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

이에 대한 자세한 내용은 도커/구성 #1896을 참조하십시오.

오, 이것만 있으면:

$ docker-compose up client server database

한 가지 좋은 솔루션은 다음과 같은 원하는 서비스만 실행하는 것입니다.

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

서비스를 제공합니다.txt 파일은 다음과 같습니다.

services1 services2, etc

물론 종속성(dependency_on)이 있으면 관련 서비스를 함께 실행해야 합니다.

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

저는 사실 현재 제 프로젝트에 대해 비슷한 도전을 했습니다.그것은 제가 도커-콤포지-프로파일(또는 줄여서 dcp)이라고 부르는 작은 스크립트를 작성해야 한다는 생각을 하게 했습니다.저는 이것을 오늘 GitLab에 도커-콤포지-프로파일로 게시했습니다.간단히 말해, 다음과 같은 명령을 사용하여 사전 정의된 여러 도커 합성 프로파일을 시작할 수 있습니다.dcp -p some-services "up -d"자유롭게 사용해 보고 피드백이나 추가 개선을 위한 제안을 해보십시오.

run 명령을 사용하여 실행할 서비스를 지정할 수 있습니다.주의: run 명령을 실행하면 포트가 호스트에 노출되지 않습니다.당신은 깃발을 사용해야 합니다.--service-ports필요하다면 그렇게 하는 것.

docker-compose run --service-ports client server database

개의 러개인경이 .compose먼저 파일을 추가해야 합니다. 파일을 작성할 때 각 서비스를 기억해야 합니다.아래를 보십시오.

docker-compose -f $(COMPOSE_FILES) -f $(ARM_64_COMPOSE_FILES) up -d app mysql_db_arm64

사용할 수 있습니다.docker compose up --build ${service-name} -d여기서 flag -d는 분리 모드에서 실행하기 위한 것입니다.

당신은 보통 이것을 하고 싶지 않습니다.도커 합성을 사용하면 앱을 구성하는 서비스를 정의할 수 있습니다.npm그리고.manage.py관리 명령일 뿐입니다.당신은 그것들을 위한 용기가 필요하지 않습니다.필요한 경우 다음을 사용하여 데이터베이스 테이블을 만듭니다.manage.py당신이 해야 할 일은 다음과 같습니다.

docker-compose run client python manage.py create_db

헤로쿠가 사용하는 일회성 다이노스라고 생각하세요.

및 Composite를 사용해야 경우) 의 "Docker Composite"를 생성할 수 있습니다..yml다음 명령을 사용하여 Docker Compose를 파일로 저장하고 시작합니다.

docker-compose up -f my_custom_docker_compose.yml

언급URL : https://stackoverflow.com/questions/30233105/docker-compose-up-for-only-certain-containers

반응형