From 1eab8b9372c1985b5a8b6ca93446dfc777d48595 Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Sat, 11 Nov 2023 20:16:30 +0000 Subject: [PATCH] chore: add target to handle database creation/migration --- Makefile | 13 ++++++++++++- docker-compose.yml | 28 ++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 60d1db1..9949f14 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ .DEFAULT_GOAL := help -COMPOSE = docker-compose -f docker-compose.yml -f docker-compose.override.yml +COMPOSE = docker compose -f docker-compose.yml -f docker-compose.override.yml .PHONY: setup setup: ## setup project @@ -36,6 +36,17 @@ compose_up: ## start containers for this service compose_test: ## run tests in containers @$(COMPOSE) run -e MIX_ENV=test --entrypoint make app test +.PHONY: compose_database_create +compose_database_create: + @$(COMPOSE) --profile setup run db_setup + +.PHONY: compose_database_migrate +compose_database_migrate: ## apply migrations to our database + @$(COMPOSE) --profile migrate run db_migrate + +.PHONY: compose_database_setup +compose_database_setup: compose_database_create compose_database_migrate ## create and apply migrations + .PHONY: compose_ps compose_ps: ## status of containers @$(COMPOSE) ps diff --git a/docker-compose.yml b/docker-compose.yml index 9a1a8ef..2311e9f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,12 +21,12 @@ services: depends_on: - db init: true - environment: + environment: &app_environment POSTGRES_HOST: *db_host POSTGRES_USER: *db_user POSTGRES_PASS: *db_pass POSTGRES_NAME: wabanex_dev - volumes: + volumes: &app_volumes - '.:/opt/app' - 'app_build:/opt/app/_build' - 'app_deps:/opt/app/deps' @@ -34,6 +34,30 @@ services: restart: unless-stopped entrypoint: sleep command: infinity + db_setup: + image: *app_image + depends_on: + - db + profiles: + - setup + environment: *app_environment + volumes: *app_volumes + restart: 'no' + command: | + mix ecto.setup \ + && MIX_ENV=test mix ecto.setup + db_migrate: + image: *app_image + depends_on: + - db + profiles: + - migrate + environment: *app_environment + volumes: *app_volumes + restart: 'no' + command: | + mix ecto.migrate \ + && MIX_ENV=test mix.ecto.migrate volumes: db_data: {}