Skip to content
This repository has been archived by the owner on Jun 19, 2024. It is now read-only.

Latest commit

 

History

History
42 lines (31 loc) · 1.79 KB

README.md

File metadata and controls

42 lines (31 loc) · 1.79 KB

goose

This is a docker container for goose migrations. This is currently restricted to postgres databases only.

To use this repository, reference the linked docker image in your Dockerfile:

# mounts the local directory as the project db directory for goose
FROM shopkeep/goose

Also make sure you pass in the database credentials as environment variables, the container requires the following environment variables:

  • DB_HOST - The ip/hostname of the database
  • DB_PORT - The port of the database
  • DB_NAME - The name of the database
  • DB_USER - The username used to connect to the database
  • DB_PASSWORD - The users password
  • DB_SSL_MODE (optional) - The SSL mode, one of: disable, require (default), verify-full

To build the migrations container, run docker from your apps db directory:

# mounts the local directory into the container
$ docker build -t myapp_migration ./

# container exits when complete
$ docker run -i -e "DB_HOST=dbhost" -e "DB_PORT=dbport" -e "DB_NAME=dbname" -e "DB_USER=dbuser DB_SSL_MODE=disable" -e "DB_PASSWORD=dbpass" -t myapp_migration

The migrations directory is mounted at build-time, which includes entrypoint, and default CMD args. You can customize what migration is used by overriding the CMD args:

$ docker run -i -e "DB_HOST=dbhost" -e "DB_PORT=dbport" -e "DB_NAME=dbname" -e "DB_USER=dbuser" -e "DB_PASSWORD=dbpass" -e "DB_SSL_MODE=require" -t myapp_migration down
$ docker run -i -e "DB_HOST=dbhost" -e "DB_PORT=dbport" -e "DB_NAME=dbname" -e "DB_USER=dbuser" -e "DB_PASSWORD=dbpass" -e "DB_SSL_MODE=require" -t myapp_migration up

Instead of passing in environment arguments manually, you can define an environment file and pass it into docker using

$ docker run -i --env-file=./envfile -t myapp_migration