Docker compose를 사용하면 여러 컨테이너를 단일 단위로 관리할 수 있습니다. 그러나 명령을 한 번만 실행하는 것은 어려울 수 있으며, 특히 데이터베이스 설정과 같은 데이터 종속 프로세스를 처리할 때는 더욱 그렇습니다.
Compose 파일에서 MongoDB 데이터를 저장하기 위한 "mongodata" 데이터 볼륨 컨테이너. 이 컨테이너는 본질적으로 할당된 볼륨을 마운트하는 일시 중지된 컨테이너입니다.
일회 초기화를 위한 진입점 스크립트:
"-setup" 명령이 여러 번 실행되는 것을 방지하려면 "my_project" 컨테이너 내에서 진입점 스크립트를 사용할 수 있습니다. 이 스크립트는 데이터베이스가 초기화되었는지 확인하고 필요한 경우에만 설정을 수행합니다.
예:
#!/bin/sh # Check if database is initialized if test -f /app/initialized; then # Database already initialized, skip setup echo "Database already initialized" else # Initialize database ./my-project -setup touch /app/initialized fi # Start the application exec /go/bin/my_project
Docker 1.9 이상에서는 기본 볼륨 관리 기능을 제공하므로 "데이터 전용" 컨테이너가 필요하지 않습니다. 다음과 같이 작성 파일을 단순화할 수 있습니다.
services: mongo: image: mongo:latest volumes: - mongodata:/data/db ports: - "28001:27017" command: --smallfiles --rest --auth
진입점 스크립트에서는 데이터베이스 가용성의 잠재적인 지연을 처리하는 것이 중요합니다. 데이터베이스에 아직 액세스할 수 없는 경우 스크립트는 연결 시도를 다시 시도해야 합니다.
위 내용은 데이터 종속 프로세스를 위해 Docker Compose에서 명령을 한 번 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!