이 기사에서는 Docker Compose를 사용하여 멀티 컨테이너 애플리케이션을 구축 할 수 있습니다. Docker-Compose.yml에서 서비스를 정의하고, 컨퍼런스 간 통신 관리 (네트워킹, 환경 변수, 볼륨) 및 문제 해결 기술을 정의합니다.
Docker Compose를 사용하여 멀티 컨테이너 응용 프로그램 구축
Docker Compose를 사용하여 멀티 컨테이너 응용 프로그램을 구축하려면 응용 프로그램 서비스를 docker-compose.yml
파일로 정의해야합니다. 이 파일은 각 서비스에 사용할 이미지, 노출 할 포트, 마운트 볼륨 및 네트워킹 구성을 지정합니다. 별도의 데이터베이스가 포함 된 웹 응용 프로그램의 간단한 예제로 설명하겠습니다.
먼저 docker-compose.yml
파일을 만듭니다.
<code class="yaml">version: "3.9" services: web: build: context: ./web dockerfile: Dockerfile ports: - "8080:80" depends_on: - db db: image: postgres:13 ports: - "5432:5432" environment: - POSTGRES_USER=myuser - POSTGRES_PASSWORD=mypassword</code>
이것은 web
과 db
두 가지 서비스를 정의합니다. web
서비스는 ./web
디렉토리에 위치한 dockerfile에서 구축되었습니다. 호스트 머신의 포트 8080을 노출시키고 컨테이너의 포트 80에 매핑합니다. 결정적으로, depends_on: - db
웹 애플리케이션 전에 데이터베이스가 시작되도록합니다. db
서비스는 사전 구축 된 PostgreSQL 이미지를 사용하고 포트 5432를 노출시킵니다 ./web
디렉토리와 Dockerfile
(예 : 기본 웹 서버의 경우 FROM nginx
)을 작성하십시오.
응용 프로그램을 빌드하고 실행하려면 docker-compose.yml
포함 된 디렉토리로 이동하여 실행하십시오.
<code class="bash">docker-compose up -d --build</code>
-d
플래그는 컨테이너를 분리 모드 (배경)로 실행합니다. --build
플래그는 필요한 경우 web
서비스의 이미지를 빌드합니다. 그런 다음 다음을 사용하여 컨테이너를 중지하고 제거 할 수 있습니다.
<code class="bash">docker-compose down</code>
이것은 기본 프레임 워크를 제공합니다. 보다 복잡한 응용 프로그램에는 복잡한 종속성 및 구성을 가진 여러 서비스가 포함될 수 있으며 docker-compose.yml
파일 내에보다 자세한 사양이 필요합니다. 생산 환경에 .env
파일 또는 비밀 관리 솔루션을 사용하여 환경 변수를 단단히 관리해야합니다.
Docker Compose의 주요 이점
Docker Compose는 멀티 컨테이너 응용 프로그램 관리를위한 몇 가지 주요 이점을 제공합니다.
docker-compose.yml
파일은 전체 응용 프로그램의 인프라를 정의하여 배포 및 복제를 간단하게 만듭니다. 따라서 여러 Docker 명령을 개별적으로 관리 할 필요가 없습니다.docker-compose.yml
파일 내에서 서비스를 쉽게 복제하고 리소스 제한을 구성하여 스케일링을위한 토대를 마련합니다. 이를 통해 나중에 Kubernetes와 같은 오케스트레이션 도구와 쉽게 통합 할 수 있습니다.docker-compose.yml
파일은 단일 진실의 소스 역할을합니다.상호 대기업 커뮤니케이션 및 데이터 공유
Docker Compose는 여러 메커니즘을 통해 인터 컨테이너 통신 및 데이터 공유를 용이하게합니다.
web
컨테이너는 호스트 이름 db
사용하여 db
컨테이너에 액세스 할 수 있습니다. 이는 일반적으로 응용 프로그램 코드 내 환경 변수 또는 구성 파일을 통해 수행됩니다.docker-compose.yml
파일에 정의되어 여러 컨테이너에 장착 될 수 있습니다. 이는 구성 파일, 데이터베이스 또는 기타 지속적인 데이터를 공유하는 데 이상적입니다. 예를 들어:<code class="yaml">version: "3.9" services: web: # ... volumes: - shared_data:/app/data db: # ... volumes: - shared_data:/var/lib/postgresql/data volumes: shared_data:</code>
이로 인해 web
및 db
서비스 모두에 액세스 할 수있는 이름의 Volume shared_data
가 생성됩니다.
docker-compose.yml
에 메시지 큐 서비스를 포함시키고 응용 프로그램을 통신하도록 구성합니다.방법 선택은 응용 프로그램의 특정 요구에 따라 다릅니다. 간단한 구성의 경우 환경 변수 또는 직접 네트워크 통신으로 충분할 수 있습니다. 지속적인 데이터 또는 비동기 통신과 관련된보다 복잡한 시나리오의 경우 볼륨 및 메시지 대기열이 더 적절합니다.
멀티 컨테이너 응용 프로그램 문제 해결
Docker Compose와 함께 구축 된 멀티 컨테이너 애플리케이션 문제 해결 종종 다양한 측면을 체계적으로 확인하는 것이 포함됩니다.
docker-compose.yml
파일 확인 : 포트 매핑, 종속성, 볼륨 및 환경 변수를 포함하여 구성이 올바른지 확인하십시오. 단일 오타는 심각한 문제로 이어질 수 있습니다.docker-compose logs <service_name></service_name>
사용하여 개별 컨테이너의 로그를보십시오. 로그는 종종 오류의 근본 원인을 나타냅니다.docker-compose ps
사용하여 컨테이너의 상태를 확인하십시오. 실행되지 않거나 오류 코드로 종료 된 컨테이너를 식별하십시오.docker exec
사용하여 컨테이너 내에서 ping
또는 기타 네트워크 진단 도구를 사용하여 컨테이너가 서로 통신 할 수 있는지 확인하십시오.docker-compose restart <service_name></service_name>
또는 docker-compose up --build -d
사용하십시오.docker-compose up --build -d
사용하여 이미지를 다시 작성하십시오.이러한 문제 해결 단계를 체계적으로 적용하면 Docker Compose와 함께 구축 된 다중 컨테이너 응용 프로그램의 문제를 효과적으로 진단하고 해결할 수 있습니다. 보다 고급 문제 해결 기술을 위해 공식 Docker Compose 문서에 문의하십시오.
위 내용은 Docker Compose를 사용하여 멀티 컨테이너 애플리케이션을 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!