# PLM WACE Docker 설정 가이드 ## 개요 이 문서는 PLM WACE 애플리케이션을 Docker로 실행하는 방법을 설명합니다. ## 시스템 요구사항 ### 리눅스 환경 - Ubuntu 18.04 이상 또는 CentOS 7 이상 - Docker 20.10 이상 - Docker Compose 1.29 이상 - Git (운영환경 배포 시) ### 필수 소프트웨어 설치 #### Docker 설치 (Ubuntu) ```bash # Docker 공식 GPG 키 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # Docker 리포지토리 추가 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Docker 설치 sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io # Docker Compose 설치 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # 사용자를 docker 그룹에 추가 sudo usermod -aG docker $USER ``` #### Docker 설치 (CentOS) ```bash # Docker 설치 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io # Docker Compose 설치 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # Docker 서비스 시작 sudo systemctl start docker sudo systemctl enable docker # 사용자를 docker 그룹에 추가 sudo usermod -aG docker $USER ``` ## 환경 설정 ### 1. 환경 변수 파일 생성 #### 개발환경 ```bash # 개발환경 환경 변수 파일 생성 cp env.development.example .env.development # 필요에 따라 설정 수정 vim .env.development ``` #### 운영환경 ```bash # 운영환경 환경 변수 파일 생성 cp env.production.example .env.production # 운영환경에 맞게 설정 수정 (특히 비밀번호) vim .env.production ``` ### 2. 환경 변수 설정 항목 #### 주요 설정 항목 - `DB_URL`: 데이터베이스 연결 URL - `DB_USERNAME`: 데이터베이스 사용자명 - `DB_PASSWORD`: 데이터베이스 비밀번호 - `JAVA_OPTS`: JVM 옵션 (메모리 설정 등) - `LOG_LEVEL`: 로그 레벨 (DEBUG, INFO, WARN, ERROR) ## 스크립트 사용법 ### 기본 사용법 ```bash # 실행 권한 부여 (최초 1회) chmod +x start-docker-linux.sh # 개발환경 실행 ./start-docker-linux.sh # 운영환경 실행 ./start-docker-linux.sh -e prod ``` ### 주요 옵션 #### 환경 설정 ```bash # 개발환경 실행 ./start-docker-linux.sh -e dev # 운영환경 실행 ./start-docker-linux.sh -e prod ``` #### 컨테이너 관리 ```bash # 컨테이너 중지 ./start-docker-linux.sh -s # 컨테이너 재시작 ./start-docker-linux.sh -r # Docker 시스템 정리 후 실행 ./start-docker-linux.sh -c ``` #### 로그 및 모니터링 ```bash # 실시간 로그 확인 ./start-docker-linux.sh -l # 도움말 확인 ./start-docker-linux.sh -h ``` ### 옵션 조합 ```bash # 개발환경에서 Docker 정리 후 재시작 ./start-docker-linux.sh -e dev -c -r # 운영환경에서 재시작 ./start-docker-linux.sh -e prod -r ``` ## 접속 정보 ### 개발환경 - 애플리케이션: http://localhost:8090 - 데이터베이스: localhost:5432 (내부 DB 사용 시) ### 운영환경 - 애플리케이션: https://ilshin.esgrin.com - 대체 도메인: https://autoclave.co.kr ## 트러블슈팅 ### 일반적인 문제 #### 1. Docker 서비스 오류 ```bash # Docker 서비스 상태 확인 sudo systemctl status docker # Docker 서비스 시작 sudo systemctl start docker # Docker 서비스 자동 시작 설정 sudo systemctl enable docker ``` #### 2. 권한 오류 ```bash # 사용자를 docker 그룹에 추가 sudo usermod -aG docker $USER # 로그아웃 후 재로그인 또는 그룹 변경 적용 newgrp docker ``` #### 3. 포트 충돌 ```bash # 포트 사용 확인 sudo netstat -tlnp | grep :8090 # 프로세스 종료 sudo kill -9 ``` #### 4. 환경 변수 파일 오류 ```bash # 환경 변수 파일 존재 확인 ls -la .env.* # 환경 변수 파일 내용 확인 cat .env.development ``` ### 로그 확인 #### 컨테이너 로그 ```bash # 전체 로그 확인 ./start-docker-linux.sh -l # 특정 서비스 로그 확인 docker-compose -f docker-compose.dev.yml logs plm-ilshin # 로그 파일 확인 (컨테이너 내부) docker exec -it plm-ilshin-container tail -f /usr/local/tomcat/logs/catalina.out ``` #### 시스템 로그 ```bash # Docker 데몬 로그 확인 sudo journalctl -u docker.service # 시스템 로그 확인 sudo journalctl -xe ``` ## 고급 사용법 ### 수동 Docker Compose 사용 ```bash # 개발환경 수동 실행 docker-compose -f docker-compose.dev.yml up -d # 운영환경 수동 실행 docker-compose -f docker-compose.prod.yml up -d # 컨테이너 중지 docker-compose -f docker-compose.dev.yml down ``` ### 컨테이너 내부 접근 ```bash # 컨테이너 내부 접근 docker exec -it plm-ilshin-container bash # 데이터베이스 접근 (내부 DB 사용 시) docker exec -it plm-ilshin-db-container psql -U postgres -d ilshin ``` ### 백업 및 복원 ```bash # 데이터베이스 백업 docker exec plm-ilshin-db-container pg_dump -U postgres ilshin > backup.sql # 데이터베이스 복원 docker exec -i plm-ilshin-db-container psql -U postgres ilshin < backup.sql ``` ## 보안 고려사항 ### 운영환경 보안 1. 환경 변수 파일 권한 설정 ```bash chmod 600 .env.production ``` 2. 방화벽 설정 ```bash # 필요한 포트만 열기 sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable ``` 3. SSL 인증서 설정 (Traefik 사용) - Let's Encrypt 자동 갱신 설정 - 도메인 검증 설정 ### 개발환경 보안 1. 개발용 비밀번호 사용 2. 외부 접근 제한 3. 정기적인 이미지 업데이트 ## 성능 최적화 ### JVM 튜닝 ```bash # .env 파일에서 JVM 옵션 조정 JAVA_OPTS=-Xms1024m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=1024m ``` ### Docker 리소스 제한 ```yaml # docker-compose.yml에서 리소스 제한 services: plm-ilshin: deploy: resources: limits: cpus: '2.0' memory: 2G reservations: cpus: '1.0' memory: 1G ``` ## 모니터링 ### 컨테이너 상태 모니터링 ```bash # 컨테이너 상태 확인 docker ps # 리소스 사용량 확인 docker stats # 컨테이너 로그 모니터링 docker logs -f plm-ilshin-container ``` ### 애플리케이션 모니터링 - 애플리케이션 로그 확인 - 데이터베이스 연결 상태 확인 - 메모리 사용량 모니터링 ## 지원 및 문의 문제가 발생하거나 추가 도움이 필요한 경우: 1. 로그 파일 확인 2. 환경 설정 검토 3. 개발팀 문의