fastapi-template および pycord-template で使用するためのPostgreSQLツールイメージ
Alembicを使用したデータベースマイグレーション管理ツール。
環境変数:
POSTGRES_USER
(必須): データベースユーザー名POSTGRES_PASSWORD
(必須): データベースパスワードPOSTGRES_HOST
(デフォルト: localhost): データベースホストPOSTGRES_PORT
(デフォルト: 5432): データベースポートPOSTGRES_DB
(デフォルト: main): データベース名
使用方法:
# マイグレーションを実行
docker run --rm -v /path/to/versions:/app/versions \
-e POSTGRES_USER=user -e POSTGRES_PASSWORD=password \
-e POSTGRES_HOST=db \
ghcr.io/ukwhatn/psql-migrator:latest
# マイグレーションファイルを生成
docker run --rm -v /path/to/versions:/app/versions \
-e POSTGRES_USER=user -e POSTGRES_PASSWORD=password \
-e POSTGRES_HOST=db \
ghcr.io/ukwhatn/psql-migrator:latest generate "新しいテーブルの追加"
# カスタムコマンドを実行
docker run --rm -v /path/to/versions:/app/versions \
-e POSTGRES_USER=user -e POSTGRES_PASSWORD=password \
-e POSTGRES_HOST=db \
ghcr.io/ukwhatn/psql-migrator:latest custom alembic history
S3ストレージを使用したデータベースバックアップ作成・管理ツール。
環境変数:
POSTGRES_USER
(必須): データベースユーザー名POSTGRES_PASSWORD
(必須): データベースパスワードPOSTGRES_HOST
(デフォルト: localhost): データベースホストPOSTGRES_PORT
(デフォルト: 5432): データベースポートPOSTGRES_DB
(デフォルト: main): データベース名SENTRY_DSN
: エラー報告用のSentry DSNS3_ENDPOINT
: S3互換ストレージのエンドポイントURLS3_ACCESS_KEY
: S3アクセスキーS3_SECRET_KEY
: S3シークレットキーS3_BUCKET
(デフォルト: test-bucket): S3バケット名BACKUP_DIR
(デフォルト: default): バックアップ用のバケット内ディレクトリBACKUP_RETENTION_DAYS
(デフォルト: 30): バックアップを保持する日数BACKUP_TIME
(デフォルト: 03:00): 日次バックアップの時間(24時間形式)DUMPER_MODE
(デフォルト: scheduled): モード(scheduled または interactive)
使用方法:
# スケジュールされたバックアップを実行
docker run --rm \
-e POSTGRES_USER=user -e POSTGRES_PASSWORD=password \
-e POSTGRES_HOST=db -e S3_ENDPOINT=https://s3.example.com \
-e S3_ACCESS_KEY=key -e S3_SECRET_KEY=secret \
-e S3_BUCKET=backups -e BACKUP_DIR=mydb \
-e DUMPER_MODE=scheduled \
ghcr.io/ukwhatn/psql-dumper:latest
# インタラクティブモードで実行
docker run -it --rm \
-e POSTGRES_USER=user -e POSTGRES_PASSWORD=password \
-e POSTGRES_HOST=db -e S3_ENDPOINT=https://s3.example.com \
-e S3_ACCESS_KEY=key -e S3_SECRET_KEY=secret \
-e S3_BUCKET=backups -e BACKUP_DIR=mydb \
-e DUMPER_MODE=interactive \
ghcr.io/ukwhatn/psql-dumper:latest
# バックアップ作成を1回だけ実行
docker run --rm \
-e POSTGRES_USER=user -e POSTGRES_PASSWORD=password \
-e POSTGRES_HOST=db -e S3_ENDPOINT=https://s3.example.com \
-e S3_ACCESS_KEY=key -e S3_SECRET_KEY=secret \
-e S3_BUCKET=backups -e BACKUP_DIR=mydb \
ghcr.io/ukwhatn/psql-dumper:latest custom python dump.py oneshot
services:
db-migrator:
container_name: project-db-migrator
image: ghcr.io/ukwhatn/psql-migrator:latest
volumes:
- ./versions:/app/versions
- ./app/db/models:/app/migrations/models # dev環境だけで良い
env_file:
- ./envs/db.env
environment:
- POSTGRES_HOST=db
restart: no
depends_on:
db:
condition: service_healthy
networks:
- db
db-dumper:
container_name: project-db-dumper
image: ghcr.io/ukwhatn/psql-dumper:latest
env_file:
- ./envs/db.env
- ./envs/sentry.env
- ./envs/aws-s3.env
environment:
- POSTGRES_HOST=db
restart: unless-stopped
depends_on:
db:
condition: service_healthy
networks:
- db
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_DB=main
SENTRY_DSN=https://your-sentry-dsn
S3_ENDPOINT=https://s3.example.com
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
S3_BUCKET=backups
BACKUP_DIR=project-db
BACKUP_RETENTION_DAYS=30
BACKUP_TIME=03:00
- Python 3.13+
- Poetry
- Docker(イメージのビルド用)
- Docker Compose V2
# 依存関係のインストール
make install
# コードフォーマット
make format
# コードの静的解析
make lint
# セキュリティチェックの実行
make security
# ベースイメージをビルド
make build-base
# マイグレーターイメージをビルド
make build-migrator
# ダンパーイメージをビルド
make build-dumper
# すべてのイメージをビルド
make build-all
# 日付ベースのバージョンでイメージにタグ付け
make tag-images
# イメージをプッシュ(認証が必要)
make push-images
このリポジトリはGitHub Actionsを使用して、関連ファイルが変更されるたびに自動的にDockerイメージをビルドしてプッシュします。Dependabotは依存関係を最新の状態に保つよう構成されています。