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.
This commit is contained in:
@@ -1,4 +1,58 @@
|
||||
# company_site
|
||||
|
||||
Django site for compan
|
||||
Somethinf
|
||||
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>`.
|
||||
|
||||
Reference in New Issue
Block a user