91 lines
2.1 KiB
Markdown
91 lines
2.1 KiB
Markdown
---
|
|
name: postgres
|
|
description: PostgreSQL database server for persistent relational storage
|
|
metadata:
|
|
version: "1.0.0"
|
|
vibestack:
|
|
main: false
|
|
metrics-port: 9187
|
|
---
|
|
|
|
# PostgreSQL Skill
|
|
|
|
Installs and configures [PostgreSQL](https://www.postgresql.org/) database server for persistent relational data storage.
|
|
|
|
## Features
|
|
|
|
- Persistent relational database
|
|
- Auto-creates database and user on first run
|
|
- WAL-based replication ready
|
|
- Connection string exposed as `DATABASE_URL`
|
|
- Optional metrics via postgres_exporter
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `POSTGRES_PORT` | `5432` | PostgreSQL port |
|
|
| `POSTGRES_USER` | `vibestack` | Default user |
|
|
| `POSTGRES_PASSWORD` | `vibestack` | Default password |
|
|
| `POSTGRES_DB` | `vibestack` | Default database |
|
|
| `POSTGRES_DATA_DIR` | `/data/postgres` | Data directory |
|
|
| `POSTGRES_INITDB_ARGS` | (none) | Extra initdb arguments |
|
|
| `POSTGRES_MAX_CONNECTIONS` | `100` | Maximum connections |
|
|
|
|
### Output Variables
|
|
|
|
After starting, the skill exports:
|
|
|
|
| Variable | Example |
|
|
|----------|---------|
|
|
| `DATABASE_URL` | `postgresql://vibestack:vibestack@localhost:5432/vibestack` |
|
|
|
|
## Usage
|
|
|
|
### As a dependency
|
|
|
|
```yaml
|
|
metadata:
|
|
vibestack:
|
|
requires:
|
|
- postgres
|
|
```
|
|
|
|
### Connection
|
|
|
|
```bash
|
|
# Connect with psql
|
|
psql "$DATABASE_URL"
|
|
|
|
# From application
|
|
DATABASE_URL=postgresql://vibestack:vibestack@localhost:5432/vibestack
|
|
```
|
|
|
|
### Custom initialization
|
|
|
|
Place SQL files in `initdb.d/` directory - they'll be executed on first startup:
|
|
|
|
```
|
|
skills/postgres/
|
|
├── initdb.d/
|
|
│ ├── 01-create-tables.sql
|
|
│ └── 02-seed-data.sql
|
|
```
|
|
|
|
## Data Persistence
|
|
|
|
All data is stored in `POSTGRES_DATA_DIR` (default: `/data/postgres`). Mount this directory to persist data across container restarts.
|
|
|
|
## Backup Integration
|
|
|
|
The `backup` skill automatically backs up PostgreSQL data using pg_dump for consistent snapshots.
|
|
|
|
## Security
|
|
|
|
For production use:
|
|
1. Set a strong `POSTGRES_PASSWORD`
|
|
2. Restrict network access to trusted hosts
|
|
3. Use SSL for connections (configure in postgresql.conf)
|