>  기사  >  백엔드 개발  >  Docker Compose에서 일회성 명령을 실행하는 방법은 무엇입니까?

Docker Compose에서 일회성 명령을 실행하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-16 05:20:03392검색

How to Execute a One-Time Command in Docker Compose?

Docker Compose에서 일회성 명령 실행

Docker compose의 컨텍스트에서는 특정 명령( ./my-project -setup) 컨테이너 다시 시작이나 배포에 관계없이 한 번만 가능합니다. 이는 초기화 또는 데이터 설정이 필요한 상황에서 발생합니다.

이 문제를 해결하려면 컨테이너 내에 진입점 스크립트를 구현하는 것이 좋습니다. 이 스크립트는 데이터베이스가 이미 초기화되었는지 확인하는 작업을 처리합니다. 그렇지 않은 경우 스크립트는 필요한 초기화 단계를 수행합니다.

컨테이너 시작 순서가 보장되지 않으므로 애플리케이션 컨테이너가 데이터베이스 컨테이너보다 먼저 시작될 수 있다는 점에 유의하는 것이 중요합니다. 이를 설명하려면 스크립트에 이러한 발생을 처리하기 위한 논리가 포함되어야 합니다.

이 접근 방식의 예는 공식 WordPress 이미지에서 찾을 수 있습니다. (https://github.com/docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint.sh#L146-L171). 스크립트는 데이터베이스에 연결을 시도하고 초기화가 필요한지 확인하고 데이터베이스에 아직 액세스할 수 없는 경우 다시 시도합니다.

볼륨 관리 최적화

초기 Docker 구성에서 파일에서 "데이터 전용" 컨테이너를 사용하여 볼륨을 연결했습니다. 그러나 최신 버전의 Docker(1.9 이상)는 볼륨 관리 기능을 제공합니다. 이렇게 하면 별도의 데이터 전용 컨테이너가 필요하지 않습니다.

데이터 전용 컨테이너를 제거하고 다음과 같이 mongo 서비스를 수정하여 Docker 작성 파일을 단순화할 수 있습니다.

mongo:
    image: mongo:latest
    volumes:
      - mongodata:/data/db
    ports:
      - "28001:27017"
    command: --smallfiles --rest --auth

이 구성 mongodata라는 볼륨이 아직 없으면 생성하거나 해당 이름의 기존 볼륨을 재사용합니다. 목록을 보려면 docker Volume ls 명령을 사용하고 docker Volume rm 제거합니다.

위 내용은 Docker Compose에서 일회성 명령을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.