mirror of
https://github.com/esauflores/databases.git
synced 2026-03-09 06:30:34 +00:00
Compare commits
8 Commits
5e3ef8941f
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| ae71307a70 | |||
| dc527779e8 | |||
| 4b783457d0 | |||
| b6867933e2 | |||
| b9068fac54 | |||
| d1766e43ce | |||
| 9e553203c5 | |||
| bb016cbade |
10
.github/workflows/test-and-push.yml
vendored
10
.github/workflows/test-and-push.yml
vendored
@@ -16,14 +16,8 @@ jobs:
|
||||
- db: postgres
|
||||
variant: base
|
||||
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_DB: postgres
|
||||
POSTGRES_PORT: 5432
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
- uses: jdx/mise-action@v3
|
||||
|
||||
- name: Test
|
||||
@@ -46,7 +40,7 @@ jobs:
|
||||
variant: base
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
- uses: jdx/mise-action@v3
|
||||
|
||||
- name: Login to registry
|
||||
|
||||
75
Justfile
75
Justfile
@@ -1,53 +1,64 @@
|
||||
set shell := ["bash", "-euo", "pipefail", "-c"]
|
||||
set dotenv-load := true
|
||||
|
||||
DATABASE := env("DATABASE", "postgres")
|
||||
SERVICE := env("SERVICE", "postgres")
|
||||
VARIANT := env("VARIANT", "base")
|
||||
|
||||
_default:
|
||||
@echo "Default env variables:"
|
||||
@echo " DATABASE: {{DATABASE}}"
|
||||
@echo " VARIANT: {{VARIANT}}"
|
||||
@just --list
|
||||
#!/usr/bin/env bash
|
||||
echo "Default env variables:"
|
||||
echo " SERVICE: {{SERVICE}}"
|
||||
echo " VARIANT: {{VARIANT}}"
|
||||
just --list
|
||||
|
||||
### Container Management ###
|
||||
|
||||
# Start the database and wait until it's healthy
|
||||
up db=DATABASE variant=VARIANT:
|
||||
just build {{db}} {{variant}}
|
||||
docker compose -f {{db}}-{{variant}}/compose.yml up -d --wait
|
||||
# Start the service and wait until it's healthy
|
||||
up service=SERVICE variant=VARIANT:
|
||||
just build {{service}} {{variant}}
|
||||
docker compose -f {{service}}/{{variant}}/compose.yml up -d --wait
|
||||
|
||||
# Stop the database container but preserve data volumes
|
||||
down db=DATABASE variant=VARIANT:
|
||||
docker compose -f {{db}}-{{variant}}/compose.yml down
|
||||
# Stop the service container but preserve data volumes
|
||||
down service=SERVICE variant=VARIANT:
|
||||
docker compose -f {{service}}/{{variant}}/compose.yml down
|
||||
|
||||
# Remove containers and data volumes but preserve images
|
||||
down-volumes db=DATABASE variant=VARIANT:
|
||||
docker compose -f {{db}}-{{variant}}/compose.yml down -v
|
||||
down-volumes service=SERVICE variant=VARIANT:
|
||||
docker compose -f {{service}}/{{variant}}/compose.yml down -v
|
||||
|
||||
# Remove containers, volumes, and images
|
||||
down-all db=DATABASE variant=VARIANT:
|
||||
docker compose -f {{db}}-{{variant}}/compose.yml down -v --rmi local
|
||||
down-all service=SERVICE variant=VARIANT:
|
||||
docker compose -f {{service}}/{{variant}}/compose.yml down -v --rmi all
|
||||
|
||||
### Shell Access ###
|
||||
|
||||
# Access a bash shell inside the running container
|
||||
bash service=SERVICE variant=VARIANT:
|
||||
docker compose -f {{service}}/{{variant}}/compose.yml exec {{service}} bash
|
||||
|
||||
# Access a sh shell inside the running container
|
||||
sh service=SERVICE variant=VARIANT:
|
||||
docker compose -f {{service}}/{{variant}}/compose.yml exec {{service}} sh
|
||||
|
||||
### Build & Publish ###
|
||||
|
||||
# Build image locally
|
||||
build db=DATABASE variant=VARIANT:
|
||||
build service=SERVICE variant=VARIANT:
|
||||
#!/usr/bin/env bash
|
||||
IMAGE="db-{{db}}"
|
||||
IMAGE="db-{{service}}"
|
||||
VERSION="{{variant}}"
|
||||
|
||||
echo "docker build -f {{db}}-{{variant}}/Dockerfile -t ${IMAGE}:${VERSION} {{db}}-{{variant}}"
|
||||
docker build -f {{db}}-{{variant}}/Dockerfile -t ${IMAGE}:${VERSION} {{db}}-{{variant}}
|
||||
echo "docker build -f {{service}}/{{variant}}/Dockerfile -t ${IMAGE}:${VERSION} {{service}}/{{variant}}"
|
||||
docker build -f {{service}}/{{variant}}/Dockerfile -t ${IMAGE}:${VERSION} {{service}}/{{variant}}
|
||||
|
||||
# Build and push image to registry
|
||||
push db=DATABASE variant=VARIANT:
|
||||
push service=SERVICE variant=VARIANT:
|
||||
#!/usr/bin/env bash
|
||||
PREFIX=${REGISTRY_URL:+${REGISTRY_URL}/}
|
||||
IMAGE="db-{{db}}"
|
||||
IMAGE="db-{{service}}"
|
||||
VERSION="{{variant}}"
|
||||
|
||||
just build {{db}} {{variant}}
|
||||
just build {{service}} {{variant}}
|
||||
|
||||
echo "docker tag ${IMAGE}:${VERSION} ${PREFIX}${IMAGE}:${VERSION}"
|
||||
docker tag ${IMAGE}:${VERSION} ${PREFIX}${IMAGE}:${VERSION}
|
||||
@@ -57,16 +68,18 @@ push db=DATABASE variant=VARIANT:
|
||||
|
||||
### Tests ###
|
||||
|
||||
# Run tests against a database variant
|
||||
test db=DATABASE variant=VARIANT:
|
||||
# Run tests against a service
|
||||
test service=SERVICE variant=VARIANT:
|
||||
#!/usr/bin/env bash
|
||||
just up {{db}} {{variant}}
|
||||
case "{{db}}:{{variant}}" in
|
||||
just up {{service}} {{variant}}
|
||||
trap "just down {{service}} {{variant}}" EXIT
|
||||
case "{{service}}:{{variant}}" in
|
||||
postgres:base) just _test-postgres base ;;
|
||||
*) echo "Unknown database: {{db}}" >&2; exit 1 ;;
|
||||
*) echo "Unknown service: {{service}} {{variant}}" >&2; exit 1 ;;
|
||||
esac
|
||||
just down {{db}} {{variant}}
|
||||
|
||||
# Run tests against a Postgres database
|
||||
_test-postgres variant=VARIANT:
|
||||
docker compose -f postgres-{{variant}}/compose.yml exec postgres pg_isready -U ${POSTGRES_USER:-postgres}
|
||||
#!/usr/bin/env bash
|
||||
docker compose -f postgres/{{variant}}/compose.yml exec postgres bash -c "
|
||||
psql -U ${POSTGRES_USER:-postgres} -c 'SELECT 1;'
|
||||
"
|
||||
|
||||
18
README.md
18
README.md
@@ -2,9 +2,19 @@
|
||||
|
||||
Custom database Docker images for local development and self-hosted deployments.
|
||||
|
||||
## Postgres 18
|
||||
## Postgres - base
|
||||
|
||||
Based on `postgres:18.3-alpine`.
|
||||
Based on `postgres:18-alpine`.
|
||||
|
||||
### Extensions
|
||||
|
||||
The following extensions are enabled by default:
|
||||
|
||||
| Extension | Description |
|
||||
| ---------- | ------------------------------------------------ |
|
||||
| `citext` | Case-insensitive text type |
|
||||
| `pg_trgm` | Trigram-based text similarity and fuzzy matching |
|
||||
| `pgcrypto` | Cryptographic functions |
|
||||
|
||||
### Configuration
|
||||
```bash
|
||||
@@ -20,12 +30,12 @@ cp .env.example .env
|
||||
|
||||
### Usage
|
||||
```bash
|
||||
docker pull git.fastwaydata.com/esauflores/database-postgres:latest
|
||||
docker pull git.fastwaydata.com/esauflores/db-postgres:base
|
||||
```
|
||||
```yaml
|
||||
services:
|
||||
postgres:
|
||||
image: git.fastwaydata.com/esauflores/database-postgres:latest
|
||||
image: git.fastwaydata.com/esauflores/db-postgres:base
|
||||
env_file: .env
|
||||
ports:
|
||||
- "${POSTGRES_PORT:-5432}:5432"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
postgres:
|
||||
image: git.fastwaydata.com/esauflores/database-postgres:latest
|
||||
image: git.fastwaydata.com/esauflores/db-postgres:base
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER:-postgres}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
postgres:
|
||||
# run `just build postgres` first
|
||||
# run `just build postgres base` first
|
||||
image: db-postgres:base
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
Reference in New Issue
Block a user