Files
red/teressa-copeland-homes/DEPLOYMENT.md
Chandler Copeland 72c23f8bba feat(17-02): DEPLOYMENT.md with env setup, migration from host, docker compose up, health check
- Step-by-step guide: configure .env.production, run drizzle-kit migrate from host
- docker compose up -d --build to build and start
- curl /api/health verification step
- Update workflow: git pull, optional migration, compose up --build
2026-04-03 16:56:43 -06:00

64 lines
1.5 KiB
Markdown

# Deployment Guide
## Prerequisites
- Git installed on the server
- Docker and Docker Compose installed on the server
## Step 1: Configure environment
Copy the example env file and fill in real values:
```bash
cp .env.production.example .env.production
```
Edit `.env.production` and set all 11 variables:
- `DATABASE_URL` — Neon PostgreSQL connection string
- `SIGNING_JWT_SECRET` — secret for signing JWT tokens
- `AUTH_SECRET` — NextAuth secret
- `AGENT_EMAIL` — agent login email
- `AGENT_PASSWORD` — agent login password
- `CONTACT_EMAIL_USER` — SMTP username
- `CONTACT_EMAIL_PASS` — SMTP password
- `CONTACT_SMTP_HOST` — SMTP host (e.g. `smtp.gmail.com`)
- `CONTACT_SMTP_PORT` — SMTP port (e.g. `465`)
- `OPENAI_API_KEY` — OpenAI API key for AI field placement
- `APP_BASE_URL` — public URL of the app (e.g. `https://teressacopelandhomes.com`)
## Step 2: Run database migration
Run migrations from the project directory on the host (not inside Docker):
```bash
DATABASE_URL=<your-neon-url> npx drizzle-kit migrate
```
This must complete successfully before starting the container. Migrations are never run inside the Docker image.
## Step 3: Build and start
```bash
docker compose up -d --build
```
## Step 4: Verify
```bash
curl http://localhost:3000/api/health
```
Expected response: `{"ok":true,"db":"connected"}`
## Updating
To deploy a new version:
```bash
git pull
# If schema changed, re-run migration first:
DATABASE_URL=<your-neon-url> npx drizzle-kit migrate
docker compose up -d --build
```