feat: add Docker support with private registry
- Add Dockerfile with vim, Korean locale, visual mode disabled - Add docker-compose.yml with build/push support for reg.firstgarden.co.kr - Add docker-entrypoint.sh for multi-service support - Add .dockerignore - Update README.md with Docker deployment guide - Consolidate SERVICE_KEY into DATA_API_SERVICE_KEY
This commit is contained in:
175
README.md
175
README.md
@ -96,7 +96,7 @@ python -m apps.weather_api.app
|
||||
python -m apps.webhook.app
|
||||
```
|
||||
|
||||
### 4. Docker로 실행
|
||||
### 4. Docker로 실행 (개발용)
|
||||
|
||||
```bash
|
||||
# Docker Compose로 모든 서비스 실행
|
||||
@ -106,6 +106,179 @@ docker-compose up -d
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
## 🐳 Docker 배포 (운영 서버)
|
||||
|
||||
운영 서버에서는 `docker-compose.yml`과 `.env` 파일만으로 서비스를 실행할 수 있습니다.
|
||||
|
||||
### 1. 디렉토리 및 파일 준비
|
||||
|
||||
```bash
|
||||
# 작업 디렉토리 생성
|
||||
mkdir -p /opt/fgtools
|
||||
cd /opt/fgtools
|
||||
|
||||
# 필요한 디렉토리 생성
|
||||
mkdir -p logs data conf
|
||||
```
|
||||
|
||||
### 2. docker-compose.yml 다운로드
|
||||
|
||||
```bash
|
||||
# docker-compose.yml 다운로드
|
||||
curl -o docker-compose.yml https://git.siane.kr/firstgarden/fgtools/raw/branch/main/docker-compose.yml
|
||||
```
|
||||
|
||||
또는 아래 내용으로 `docker-compose.yml` 파일을 직접 생성:
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
x-common: &common
|
||||
image: reg.firstgarden.co.kr/fgtools:latest
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- TZ=Asia/Seoul
|
||||
- PYTHONIOENCODING=utf-8
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- fgtools-network
|
||||
|
||||
services:
|
||||
dashboard:
|
||||
<<: *common
|
||||
container_name: fgtools-dashboard
|
||||
command: ["dashboard"]
|
||||
ports:
|
||||
- "5000:5000"
|
||||
environment:
|
||||
- FLASK_PORT=5000
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./data:/app/data
|
||||
- ./conf:/app/conf:ro
|
||||
|
||||
weather-api:
|
||||
<<: *common
|
||||
container_name: fgtools-weather
|
||||
command: ["weather"]
|
||||
ports:
|
||||
- "5001:5001"
|
||||
environment:
|
||||
- FLASK_PORT=5001
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./data:/app/data
|
||||
- ./conf:/app/conf:ro
|
||||
|
||||
webhook:
|
||||
<<: *common
|
||||
container_name: fgtools-webhook
|
||||
command: ["webhook"]
|
||||
ports:
|
||||
- "5002:5002"
|
||||
environment:
|
||||
- FLASK_PORT=5002
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./data:/app/data
|
||||
- ./conf:/app/conf:ro
|
||||
|
||||
networks:
|
||||
fgtools-network:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
### 3. 환경 설정 파일 생성
|
||||
|
||||
```bash
|
||||
# .env 파일 생성 (아래 내용 참고하여 편집)
|
||||
cat > .env << 'EOF'
|
||||
# 공공데이터포털 API 키
|
||||
DATA_API_SERVICE_KEY=your_api_key_here
|
||||
|
||||
# 데이터베이스
|
||||
DB_HOST=your_db_host
|
||||
DB_USER=your_db_user
|
||||
DB_PASSWORD=your_db_password
|
||||
DB_NAME=your_db_name
|
||||
DB_CHARSET=utf8mb4
|
||||
|
||||
# Mattermost 알림
|
||||
MATTERMOST_ENABLED=true
|
||||
MATTERMOST_URL=https://your-mattermost.com
|
||||
MATTERMOST_TOKEN=your_token
|
||||
MATTERMOST_CHANNEL_ID=your_channel_id
|
||||
|
||||
# 기타 설정은 필요에 따라 추가
|
||||
EOF
|
||||
|
||||
# .env 파일 편집
|
||||
vi .env
|
||||
```
|
||||
|
||||
### 4. 사설 레지스트리 로그인
|
||||
|
||||
```bash
|
||||
# 사설 레지스트리 로그인
|
||||
docker login reg.firstgarden.co.kr
|
||||
```
|
||||
|
||||
### 5. 서비스 실행
|
||||
|
||||
```bash
|
||||
# 이미지 다운로드 및 서비스 시작
|
||||
docker-compose pull
|
||||
docker-compose up -d
|
||||
|
||||
# 상태 확인
|
||||
docker-compose ps
|
||||
|
||||
# 로그 확인
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 6. 서비스 관리
|
||||
|
||||
```bash
|
||||
# 전체 서비스 중지
|
||||
docker-compose down
|
||||
|
||||
# 특정 서비스만 재시작
|
||||
docker-compose restart dashboard
|
||||
|
||||
# 서비스 업데이트 (새 이미지 배포 시)
|
||||
docker-compose pull
|
||||
docker-compose up -d
|
||||
|
||||
# 컨테이너 쉘 접속
|
||||
docker exec -it fgtools-dashboard /bin/bash
|
||||
```
|
||||
|
||||
### 7. 포트 및 서비스 정보
|
||||
|
||||
| 서비스 | 컨테이너명 | 포트 | 헬스체크 URL |
|
||||
|--------|-----------|------|--------------|
|
||||
| Dashboard | fgtools-dashboard | 5000 | http://localhost:5000/api/dashboard/health |
|
||||
| Weather API | fgtools-weather | 5001 | http://localhost:5001/api/weather/health |
|
||||
| Webhook | fgtools-webhook | 5002 | http://localhost:5002/webhook/health |
|
||||
|
||||
### 8. 이미지 빌드 및 푸시 (개발자용)
|
||||
|
||||
```bash
|
||||
# 소스 디렉토리에서 실행
|
||||
cd /path/to/fgtools
|
||||
|
||||
# 이미지 빌드
|
||||
docker-compose build
|
||||
|
||||
# 사설 레지스트리에 푸시
|
||||
docker-compose push
|
||||
|
||||
# 빌드와 푸시 한번에
|
||||
docker-compose build && docker-compose push
|
||||
```
|
||||
|
||||
## 📖 API 문서
|
||||
|
||||
### Dashboard API (포트 5000)
|
||||
|
||||
Reference in New Issue
Block a user