Entrypoint 스크립트를 사용하여 Docker Compose에서 일회성 명령을 실행하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-11 16:57:03
원래의
513명이 탐색했습니다.

How to Execute One-Time Commands in Docker Compose with Entrypoint Scripts?

Docker Compose에서 일회성 명령 실행 방법

명령을 한 번만 실행하면 되는 Docker 환경을 설정하려면, 데이터베이스 채우기와 같은 권장 접근 방식은 진입점 스크립트를 활용하는 것입니다.

진입점 스크립트

컨테이너 이미지 내에서 일반적으로 Entrypoint.sh라는 이름의 진입점 스크립트를 만듭니다. . 이 스크립트는 데이터베이스 초기화가 완료되었는지 확인하고 그렇지 않은 경우 필요한 작업을 수행합니다.

다음은 공식 WordPress 이미지를 기반으로 한 예시 진입점 스크립트입니다.

#!/bin/bash

set -e

# Function to check if database initialization is needed
is_init_needed() {
  # Insert database initialization check logic here
  return 0
}

# Check if initialization is needed
if is_init_needed; then
  # Perform database initialization
  echo "Initializing database..."
  /usr/bin/mysql -u "root" -p"$MYSQL_ROOT_PASSWORD" -h "mysql" < /usr/local/init.sql
  echo "Database initialized successfully."
fi

# Start the application
exec "$@"
로그인 후 복사

Docker Compose 구성

docker-compose.yml 파일에서 다음과 같이 초기화가 필요한 서비스의 진입점 키에 진입점 스크립트를 지정합니다.

services:
  my_project:
    build: .
    entrypoint: ["./entrypoint.sh"]
    ...
로그인 후 복사

추가 참고 사항

  • 답변에서 언급했듯이 Docker 볼륨 관리에 "데이터 전용 컨테이너"를 사용하는 것은 Docker 1.9부터 구식입니다. 대신, 볼륨 키를 사용하여 볼륨을 서비스에 직접 연결할 수 있습니다.
  • 진입점 스크립트는 데이터베이스 컨테이너가 애플리케이션 컨테이너 다음에 시작될 수 있는 가능성을 고려해야 합니다.
  • Docker Compose는 엄격한 서비스 시작 시 주문하세요. my_project 서비스는 해당 종속성(mongo 및 mongodata)이 준비될 때까지 시작되지 않습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿