Sign inSign up

theanurin/sqlmigrationrunner

By theanurin

Updated over 1 year ago

SQL Migration Builder - is a processor of Mustache based SQL script templates.

Image
0

10K+

theanurin/sqlmigrationrunner repository overview

Docker Image Version Docker Image Size GitHub Workflow Status GitHub Repo Stars Docker Pulls Docker Stars

SQL Migration Runner

This is SQL Migration runner to execute bundle(set) of install/rollback scripts.

Public Image: https://hub.docker.com/r/theanurin/sqlmigrationrunner

Input Directory Tree

In following sample you may see structure of bundle(set) of install/rollback scripts.

.
├── v0000
│   ├── install
│   │   ├── 00-begin.js
│   │   ├── 10-user-install.sql
│   │   ├── 20-uuid-ext-install.sql
│   │   └── 99-end.js
│   └── rollback
│       ├── 00-begin.js
│       ├── 10-user-rollback.sql
│       ├── 20-uuid-ext-rollback.sql
│       └── 99-end.js
├── v0001
│   ├── install
│   │   └── 50-schemas-install.sql
│   └── rollback
│       └── 50-schemas-rollback.sql
└── v0002
    ├── install
    │   └── 50-tr_block_any_updates.sql
    └── rollback
        └── 50-tr_block_any_updates.sql

where v0000, v0001 and v0002 versions of a database. Choose version naming by your own. MigrationManager used alpha-number sorting to define install/rollback sequence.

Use this container directly

Environment Variables
VariableDescriptionExample
DB_URLDB connectivity URIpostgres://[email protected]:5432/emptytestdb, mysql://[email protected]:5432/emptytestdb, file+sqlite:///var/myproject/sqlite.db
DB_USER (optional)Provide DB role (user) name. Mutually excluded by DB_USER_FILE. Override an user passed in DB_URLSuperUser
DB_USER_FILE (optional)Provide a path to file where stored DB role (user) name. Mutually excluded by DB_USER. Override an user passed in DB_URL/run/secret/DbOwnerUser
DB_PASSWORD (optional)Provide DB role password. Mutually excluded by DB_PASSWORD_FILE. Override an user passed in DB_URLSuperPassword
DB_PASSWORD_FILE (optional)Provide a path to file where stored user password. Mutually excluded by DB_PASSWORD. Override an user passed in DB_URL/run/secret/DbOwnerPassword
DB_TARGET_VERSION (optional)Version of database of which install/rollback process must stopv0042
Install
docker run --rm --tty --interactive \
  --volume /PATH/TO/YOUR/MIGRATION/DIRECTORY:/data \
  --env DB_URL="postgres://[email protected]:5432/emptytestdb" \
  --env DB_TARGET_VERSION="v0042" \
  theanurin/sqlmigrationrunner install

Command aliases: install, up, migration-up

Rollback
docker run --rm --tty --interactive \
  --env DB_URL="postgres://[email protected]:5432/emptytestdb" \
  --env DB_TARGET_VERSION="v0042" \
  theanurin/sqlmigrationrunner rollback

Command aliases: rollback, down, migration-down

Build standalone, self-executable SQL release image

ARG BUILD_CONFIGURATION=production
ARG SQL_MIGRATION_BUILDER_IMAGE=theanurin/sqlmigrationbuilder
ARG SQL_MIGRATION_RUNNER_IMAGE=theanurin/sqlmigrationrunner

FROM ${SQL_MIGRATION_BUILDER_IMAGE} AS sql_builder
ARG BUILD_CONFIGURATION
ARG BUILD_VERSION_FROM
ARG BUILD_VERSION_TO
WORKDIR /build
RUN apk add --no-cache tree
COPY migration ./migration
COPY database.config .
COPY database-${BUILD_CONFIGURATION}.config .
# Compile SQL scripts
RUN ENV="${BUILD_CONFIGURATION}" VERSION_FROM="${BUILD_VERSION_FROM}" VERSION_TO="${BUILD_VERSION_TO}" /usr/local/bin/docker-entrypoint.js
RUN mkdir --parents .stage/usr/local/sqlmigration
# Move compiled artifacts
RUN mv .dist .stage/data
# Generate README.md
RUN (cd .stage/data/ && tree) | sed 's/[[:blank:]]/·/g' > .stage/usr/local/sqlmigration/README.md
# Include RELEASE_NOTES.md
COPY RELEASE_NOTES.md ./.stage/data/


FROM ${SQL_MIGRATION_RUNNER_IMAGE}
COPY --from=sql_builder /build/.stage /

Tag summary

Content type

Image

Digest

sha256:f1ac697cc

Size

54.6 MB

Last updated

over 1 year ago

docker pull theanurin/sqlmigrationrunner