Files
prompt/docs/deploy-ubuntu-docker.md
dsyoon 27540269b7 Initial commit: add FastAPI MVP (모프) and existing web app
Includes FastAPI+Jinja2+HTMX+SQLite implementation with seed categories, plus deployment templates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 17:17:22 +09:00

95 lines
2.0 KiB
Markdown

# Ubuntu 22.04 + Docker로 운영 배포 (prompt.ncue.net)
목표: `https://prompt.ncue.net` → Caddy(자동 HTTPS) → `web`(Next.js) → PostgreSQL(`ncue.net/all_prompt`)
## 1) 서버 사전 준비
### 1.1 DNS
- `prompt.ncue.net` A 레코드가 서버 공인 IP를 가리키도록 설정
### 1.2 방화벽
- TCP 80, 443 오픈
### 1.3 Docker 설치
```bash
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
```
## 2) 배포
```bash
sudo mkdir -p /opt/all-prompt
sudo chown -R $USER:$USER /opt/all-prompt
cd /opt/all-prompt
git clone <YOUR_REPO_URL> .
cp .env.example .env
nano .env
```
`.env` 필수:
- `DATABASE_URL`: `postgresql://ncue:<PASSWORD>@ncue.net:5432/all_prompt?schema=public`
- `CADDY_EMAIL`: 인증서 발급용 이메일
실행:
```bash
docker compose up -d --build
docker compose ps
```
확인:
- `https://prompt.ncue.net/api/health`
- `https://prompt.ncue.net/entities`
- `https://prompt.ncue.net/prompts`
## 3) 초기 스키마/시드(필요할 때만 1회)
> 원격 DB에 테이블이 없다면 실행.
```bash
docker compose --profile init run --rm db_init
docker compose --profile init run --rm db_seed
```
## 4) 운영 팁
### 로그
```bash
docker compose logs -f --tail=200 web
docker compose logs -f --tail=200 caddy
```
### 업데이트
```bash
git pull
docker compose up -d --build
```
### 인증서/설정 데이터
- Caddy 데이터는 도커 볼륨(`caddy_data`, `caddy_config`)에 유지됨