피드로 돌아가기
Dev.toDevOps
원문 읽기
UID/GID 불일치 및 Volume Mount 제약 해결을 통한 Hermes WebUI 최적 배포
Deploying Hermes WebUI with Docker — The 8 Errors I Hit and How to Fix Them
AI 요약
Context
Hermes Agent를 위한 WebUI 배포 과정에서 Host OS(macOS, RHEL 등)와 Docker Container 간의 파일 시스템 권한 및 보안 정책 충돌 발생. 단순 Docker Compose 실행만으로는 환경별 권한 불일치로 인한 Write Permission 거부 및 데이터 유실 위험 상존.
Technical Solution
- WANTED_UID 및 WANTED_GID 환경 변수를 도입하여 Host-Container 간 User ID 일치를 통한 권한 문제 해결
- Entrypoint 스크립트를 통한 Container 내부 사용자 생성 로직 구현으로 Permission Denied 에러 방지
- Host 디렉터리 사전 생성 및 init-data.sh 실행을 통해 Docker Volume Mount의 Overlay 특성으로 인한 데이터 은폐 문제 해결
- SELinux 환경의 접근 제어를 위해 Volume Mount 옵션에 :Z 플래그를 추가하여 파일 시스템 레이블 자동 재설정
- 단일 컨테이너부터 Production급 3-Container 구조까지 단계적 격리 수준을 제공하는 Deployment Mode 설계
- Gateway와 Agent Runtime의 분리를 통해 책임 소재를 명확히 한 아키텍처 구성
실천 포인트
- Docker Volume 마운트 시 Host와 Container의 UID/GID 일치 여부 확인 - RHEL/Fedora 환경 배포 시 볼륨 옵션에 :z 또는 :Z 플래그 적용 검토 - 호스트의 빈 디렉터리가 컨테이너 내 기존 데이터를 덮어쓰는 특성을 고려한 사전 초기화 스크립트 작성 - 멀티 컨테이너 환경에서 공통 환경 변수(.env)를 통한 권한 설정 동기화