app:delegated는 Docker에서 볼륨을 설정할 때 사용하는 옵션으로, 파일 동기화의 성능을 최적화하기 위한 설정입니다.
기본 구조
volumes:
- .:/var/www/app:delegated
.
: 로컬 머신의 현재 디렉터리(호스트 경로)를 의미합니다./var/www/app
: 컨테이너 내부에서 위 디렉터리를 연결할 경로입니다.:delegated
: 볼륨 동기화 전략을 지정하는 옵션입니다.
:delegated
옵션의 의미
- 의도: 데이터 동기화의 우선순위를 호스트(로컬 머신)보다 컨테이너 내부의 동작에 두는 설정입니다.
- 주요 특징:
- 컨테이너가 우선: 컨테이너가 데이터를 로컬 머신보다 더 빠르게 읽고 쓸 수 있도록 설계되었습니다.
- 비동기 동기화: 로컬 머신으로의 데이터 업데이트는 비동기로 수행됩니다. 즉, 컨테이너 내부에서 작성된 파일은 즉시 로컬 머신에 반영되지 않을 수 있지만, 이는 동작 속도를 개선합니다.
사용 이유
- 성능 최적화: 로컬 머신과 컨테이너 간의 파일 동기화가 많은 경우, 성능 저하를 방지하기 위해 사용됩니다.
- PHP, Laravel 등의 개발 환경에서 컨테이너 내부의 응답성을 높이기 위해 자주 사용됩니다.
다른 동기화 옵션과 비교
consistent
(기본값):- 로컬과 컨테이너 간의 파일 동기화가 항상 실시간으로 이루어짐.
- 동기화 정확도가 높지만 성능 저하가 발생할 수 있음.
delegated
:- 컨테이너에서의 동작 속도가 중요할 때 사용.
- 비동기 동기화로 인해 로컬 업데이트가 지연될 수 있음.
cached
:- 로컬 머신의 파일 읽기 속도를 최적화.
- 컨테이너에서의 파일 변경 사항이 지연될 수 있음.
결론
:delegated
옵션은 Laravel, PHP 개발 환경에서 파일 동기화의 성능을 개선하고자 할 때 매우 유용합니다. 특히 개발 중 자주 변경되는 파일을 실시간으로 로컬에 반영할 필요가 적을 때 적합합니다.
기본 옵션은 consistent 입니다.
기본 옵션 consistent
의 특징
- 실시간 동기화:
- 로컬 머신과 컨테이너 사이의 파일 동기화가 즉시 이루어집니다.
- 호스트에서 변경된 파일은 컨테이너에서 바로 사용할 수 있고, 그 반대도 동일합니다.
- 높은 동기화 정확도:
- 동기화에 있어 데이터 불일치 문제가 발생하지 않습니다.
- 컨테이너와 로컬 간 파일 상태를 항상 일치시키는 것이 보장됩니다.
- 성능:
- 동기화를 항상 실시간으로 유지하기 때문에 성능 저하가 발생할 수 있습니다. 특히, 많은 파일이 포함된 프로젝트에서는 동기화 시간이 길어질 수 있습니다.
'Docker' 카테고리의 다른 글
--add-host=host.docker.internal:host-gateway 옵션에 대해서 (0) | 2025.01.30 |
---|---|
Docker > Solving SQLSTATE[HY000] [1045] Access Denied Error (0) | 2025.01.29 |
도커에서 laravel 프로젝트 다운로드 하기 (0) | 2025.01.23 |
Dockerfile 이란? - 실습하기 (0) | 2025.01.23 |
8.2-fpm과 8.2-fpm-alpine 차이점 (0) | 2025.01.21 |