docs: add docker compose quickstart
This commit is contained in:
12
README.md
12
README.md
@@ -236,7 +236,17 @@ The application automatically selects the appropriate database strategy:
|
|||||||
|
|
||||||
## 🐳 Docker Development
|
## 🐳 Docker Development
|
||||||
|
|
||||||
### **Build and Run**
|
### **Docker Compose Quickstart**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
- Serves the production build at [http://localhost:8080](http://localhost:8080)
|
||||||
|
- Spins up CouchDB at [http://localhost:5984](http://localhost:5984) using credentials from `.env`
|
||||||
|
- Applies CORS settings from `couchdb-config/cors.ini` (update the allowed `origins` for custom domains)
|
||||||
|
|
||||||
|
### **Manual Build and Run**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Build Docker image
|
# Build Docker image
|
||||||
|
|||||||
8
couchdb-config/cors.ini
Normal file
8
couchdb-config/cors.ini
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[chttpd]
|
||||||
|
enable_cors = true
|
||||||
|
|
||||||
|
[cors]
|
||||||
|
origins = http://localhost:8080, http://localhost:5173
|
||||||
|
credentials = true
|
||||||
|
methods = GET, PUT, POST, HEAD, DELETE, OPTIONS
|
||||||
|
headers = accept, authorization, content-type, origin, referer, cache-control, x-requested-with
|
||||||
16
couchdb-config/docker.ini
Normal file
16
couchdb-config/docker.ini
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
[admins]
|
||||||
|
admin = -pbkdf2:sha256-c9a393efac86b8a234ad91c5f7dd5a3d057ea7b76aad8b0194b41ff64ee80ec5,cab6f942a2c7d4ff7e5d54010475b7a2,600000
|
||||||
|
|
||||||
|
[couchdb]
|
||||||
|
uuid = 2083849204f5378942a1abfff8ef20cf
|
||||||
|
|
||||||
|
[chttpd_auth]
|
||||||
|
secret = 4e4abcc9cae38e179910098ad7f2f2e4
|
||||||
|
|
||||||
|
[chttpd]
|
||||||
|
bind_address = 0.0.0.0
|
||||||
|
port = 5984
|
||||||
|
|
||||||
|
[cluster]
|
||||||
|
n = 1
|
||||||
40
docker-compose.yaml
Normal file
40
docker-compose.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
couchdb:
|
||||||
|
image: couchdb:3
|
||||||
|
container_name: meds-couchdb
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
COUCHDB_USER: ${COUCHDB_USER:-admin}
|
||||||
|
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD:-change-this-secure-password}
|
||||||
|
ports:
|
||||||
|
- '5984:5984'
|
||||||
|
volumes:
|
||||||
|
- couchdb-data:/opt/couchdb/data
|
||||||
|
- ./couchdb-config:/opt/couchdb/etc/local.d
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
args:
|
||||||
|
NODE_ENV: ${NODE_ENV:-production}
|
||||||
|
VITE_COUCHDB_URL: ${VITE_COUCHDB_URL:-http://localhost:5984}
|
||||||
|
VITE_COUCHDB_USER: ${VITE_COUCHDB_USER:-admin}
|
||||||
|
VITE_COUCHDB_PASSWORD: ${VITE_COUCHDB_PASSWORD:-change-this-secure-password}
|
||||||
|
VITE_ADMIN_EMAIL: ${VITE_ADMIN_EMAIL:-admin@localhost}
|
||||||
|
VITE_ADMIN_PASSWORD: ${VITE_ADMIN_PASSWORD:-admin123!}
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
depends_on:
|
||||||
|
- couchdb
|
||||||
|
ports:
|
||||||
|
- '8080:80'
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
couchdb-data:
|
||||||
|
name: meds-couchdb-data
|
||||||
@@ -225,6 +225,8 @@ DEV_API_URL=http://localhost:5984
|
|||||||
| `CERT_MANAGER_ISSUER` | `letsencrypt-prod` | Certificate issuer |
|
| `CERT_MANAGER_ISSUER` | `letsencrypt-prod` | Certificate issuer |
|
||||||
| `CORS_ORIGIN` | `*` | CORS allowed origins |
|
| `CORS_ORIGIN` | `*` | CORS allowed origins |
|
||||||
|
|
||||||
|
> When running via `docker compose up --build`, CouchDB CORS settings are sourced from `couchdb-config/cors.ini`. Update the `origins` list in that file to add additional frontend domains.
|
||||||
|
|
||||||
### Performance Variables
|
### Performance Variables
|
||||||
|
|
||||||
| Variable | Default | Description |
|
| Variable | Default | Description |
|
||||||
|
|||||||
Reference in New Issue
Block a user