320 lines
6.9 KiB
Markdown
320 lines
6.9 KiB
Markdown
|
|
# WACE PLM Docker 설정 가이드
|
||
|
|
|
||
|
|
## 개요
|
||
|
|
이 문서는 WACE PLM 애플리케이션을 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://waceplm.esgrin.com
|
||
|
|
|
||
|
|
## 트러블슈팅
|
||
|
|
|
||
|
|
### 일반적인 문제
|
||
|
|
|
||
|
|
#### 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 <PID>
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 4. 환경 변수 파일 오류
|
||
|
|
```bash
|
||
|
|
# 환경 변수 파일 존재 확인
|
||
|
|
ls -la .env.*
|
||
|
|
|
||
|
|
# 환경 변수 파일 내용 확인
|
||
|
|
cat .env.development
|
||
|
|
```
|
||
|
|
|
||
|
|
### 로그 확인
|
||
|
|
|
||
|
|
#### 컨테이너 로그
|
||
|
|
```bash
|
||
|
|
# 전체 로그 확인
|
||
|
|
./start-docker-linux.sh -l
|
||
|
|
|
||
|
|
# 특정 서비스 로그 확인
|
||
|
|
docker-compose -f docker-compose.dev.yml logs wace-plm
|
||
|
|
|
||
|
|
# 로그 파일 확인 (컨테이너 내부)
|
||
|
|
docker exec -it wace-plm-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 wace-plm-container bash
|
||
|
|
|
||
|
|
# 데이터베이스 접근 (내부 DB 사용 시)
|
||
|
|
docker exec -it wace-plm-db-container psql -U postgres -d waceplm
|
||
|
|
```
|
||
|
|
|
||
|
|
### 백업 및 복원
|
||
|
|
```bash
|
||
|
|
# 데이터베이스 백업
|
||
|
|
docker exec wace-plm-db-container pg_dump -U postgres waceplm > backup.sql
|
||
|
|
|
||
|
|
# 데이터베이스 복원
|
||
|
|
docker exec -i wace-plm-db-container psql -U postgres waceplm < 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:
|
||
|
|
wace-plm:
|
||
|
|
deploy:
|
||
|
|
resources:
|
||
|
|
limits:
|
||
|
|
cpus: '2.0'
|
||
|
|
memory: 2G
|
||
|
|
reservations:
|
||
|
|
cpus: '1.0'
|
||
|
|
memory: 1G
|
||
|
|
```
|
||
|
|
|
||
|
|
## 모니터링
|
||
|
|
|
||
|
|
### 컨테이너 상태 모니터링
|
||
|
|
```bash
|
||
|
|
# 컨테이너 상태 확인
|
||
|
|
docker ps
|
||
|
|
|
||
|
|
# 리소스 사용량 확인
|
||
|
|
docker stats
|
||
|
|
|
||
|
|
# 컨테이너 로그 모니터링
|
||
|
|
docker logs -f wace-plm-container
|
||
|
|
```
|
||
|
|
|
||
|
|
### 애플리케이션 모니터링
|
||
|
|
- 애플리케이션 로그 확인
|
||
|
|
- 데이터베이스 연결 상태 확인
|
||
|
|
- 메모리 사용량 모니터링
|
||
|
|
|
||
|
|
## 지원 및 문의
|
||
|
|
|
||
|
|
문제가 발생하거나 추가 도움이 필요한 경우:
|
||
|
|
1. 로그 파일 확인
|
||
|
|
2. 환경 설정 검토
|
||
|
|
3. 개발팀 문의
|