Files
company_site/README.md
T
westfarn faca7b1084
CI / test (pull_request) Successful in 7s
Dockerize Django app with dev/beta/prod env config and uv.
Replace hardcoded settings with environment-driven config, add Docker
compose for local and production deploys, migrate from pip to uv, and
split Gitea workflows so PRs run tests only while master pushes deploy.
2026-07-03 06:15:43 -05:00

59 lines
1.7 KiB
Markdown

# company_site
Django site for AIML Operations.
## Local development (uv)
```bash
uv sync
cp .env.example .env
cd company_site
DJANGO_ENV=dev uv run python manage.py migrate
DJANGO_ENV=dev uv run python manage.py runserver
```
## Docker (dev + Postgres)
```bash
cp .env.example .env
docker compose up --build
```
App: http://localhost:8000
## Environments
Set `DJANGO_ENV` to one of:
| Value | DEBUG default | Logging level |
|-------|---------------|---------------|
| `dev` | true | DEBUG |
| `beta` | false | INFO |
| `prod` | false | WARNING |
Secrets and service config come from environment variables. See `.env.example`.
## CI / deploy workflows
| Workflow | Trigger | What runs |
|----------|---------|-----------|
| `.gitea/workflows/ci.yml` | Pull requests to `master` | Unit tests only |
| `.gitea/workflows/deploy.yml` | Push to `master` | Unit tests → Docker build/test → deploy |
Deploy never runs on pull requests. Uses separate workflow files (not job `if` conditions) so Gitea runners handle it reliably.
## Production deploy
Server keeps its own `.env` at the live site path. Deploy rsyncs code but **never overwrites `.env`**.
1. On the server, copy `.env.prod.example` to `.env` and fill in production values.
2. Run `bash scripts/validate-env.sh /path/to/.env` to verify required variables.
3. Push to `master` — the deploy workflow runs `scripts/deploy.sh`, which:
- rsyncs checkout to live site (preserving `.env`)
- validates environment variables
- `docker compose -f docker-compose.prod.yml build`
- `docker compose up -d`
- runs migrations in the web container
Legacy venv/systemd deploy: `DEPLOY_MODE=legacy bash scripts/deploy.sh <checkout>`.