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

2.0 KiB

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 설치

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) 배포

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: 인증서 발급용 이메일

실행:

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에 테이블이 없다면 실행.

docker compose --profile init run --rm db_init
docker compose --profile init run --rm db_seed

4) 운영 팁

로그

docker compose logs -f --tail=200 web
docker compose logs -f --tail=200 caddy

업데이트

git pull
docker compose up -d --build

인증서/설정 데이터

  • Caddy 데이터는 도커 볼륨(caddy_data, caddy_config)에 유지됨