2021-07-30 07:56:37 -04:00
|
|
|
all: docker-build
|
|
|
|
|
|
|
|
|
|
CWD := $(shell pwd)
|
|
|
|
|
DOCKER_ARGS ?= -d
|
|
|
|
|
|
|
|
|
|
REGISTRY_NAME?=docker.io/hashicorpboundary
|
2022-04-25 17:39:23 -04:00
|
|
|
TEST_IMAGE_NAME=postgres
|
|
|
|
|
TEST_IMAGE_TAG ?= $(REGISTRY_NAME)/$(TEST_IMAGE_NAME):11-alpine
|
2021-07-30 07:56:37 -04:00
|
|
|
PG_OPTS ?=
|
|
|
|
|
TEST_DB_PORT ?= 5432
|
2021-10-21 14:30:33 -04:00
|
|
|
TEST_CONTAINER_NAME ?= boundary-sql-tests
|
2021-07-30 07:56:37 -04:00
|
|
|
|
|
|
|
|
# Generate targets from dockerfiles
|
|
|
|
|
dockerfiles = $(wildcard Dockerfile.*)
|
2022-03-10 13:23:14 -05:00
|
|
|
docker-buildxs = $(patsubst Dockerfile.%,%-buildx, $(dockerfiles))
|
2022-04-28 13:46:04 -04:00
|
|
|
docker-load-buildxs = $(patsubst Dockerfile.%,%-load-buildx, $(dockerfiles))
|
2021-07-30 07:56:37 -04:00
|
|
|
|
2022-03-10 13:23:14 -05:00
|
|
|
# Before running this target a builder instance needs to be setup, ie:
|
|
|
|
|
# docker buildx create --driver docker-container --use
|
|
|
|
|
docker-build: ${docker-buildxs}
|
2021-07-30 07:56:37 -04:00
|
|
|
|
2022-03-10 13:23:14 -05:00
|
|
|
${docker-buildxs}: %-buildx:
|
|
|
|
|
docker buildx build \
|
|
|
|
|
--platform linux/amd64,linux/arm64 \
|
|
|
|
|
--push \
|
2022-04-25 17:39:23 -04:00
|
|
|
-t $(REGISTRY_NAME)/$(TEST_IMAGE_NAME):$* \
|
2022-03-10 13:23:14 -05:00
|
|
|
-f Dockerfile.$* .
|
2021-07-30 07:56:37 -04:00
|
|
|
|
2022-04-28 13:46:04 -04:00
|
|
|
docker-load: ${docker-load-buildxs}
|
|
|
|
|
|
|
|
|
|
${docker-load-buildxs}: %-load-buildx:
|
|
|
|
|
docker buildx build \
|
|
|
|
|
--load \
|
|
|
|
|
-t $(REGISTRY_NAME)/$(TEST_IMAGE_NAME):$* \
|
|
|
|
|
-f Dockerfile.$* .
|
|
|
|
|
|
2021-07-30 07:56:37 -04:00
|
|
|
database-up:
|
2022-04-25 17:39:23 -04:00
|
|
|
@echo "Using image: $(TEST_IMAGE_TAG)"
|
2021-07-30 07:56:37 -04:00
|
|
|
@echo "Additional postgres configuration: $(PG_OPTS)"
|
|
|
|
|
@docker run \
|
|
|
|
|
$(DOCKER_ARGS) \
|
2021-10-21 14:30:33 -04:00
|
|
|
--name $(TEST_CONTAINER_NAME) \
|
2021-07-30 07:56:37 -04:00
|
|
|
-p $(TEST_DB_PORT):5432 \
|
|
|
|
|
-e POSTGRES_PASSWORD=boundary \
|
|
|
|
|
-e POSTGRES_USER=boundary \
|
|
|
|
|
-e POSTGRES_DB=boundary \
|
|
|
|
|
-e PGDATA=/pgdata \
|
|
|
|
|
--mount type=tmpfs,destination=/pgdata \
|
2021-09-13 17:13:57 -04:00
|
|
|
-v "$(CWD)/../../../internal/db/schema/migrations":/migrations \
|
2022-04-25 17:39:23 -04:00
|
|
|
$(TEST_IMAGE_TAG) \
|
2021-07-30 07:56:37 -04:00
|
|
|
-c 'config_file=/etc/postgresql/postgresql.conf' \
|
|
|
|
|
$(PG_OPTS) 1> /dev/null
|
2021-10-21 14:30:33 -04:00
|
|
|
@echo "Container name: $(TEST_CONTAINER_NAME)"
|
2021-07-30 07:56:37 -04:00
|
|
|
@echo "Test database available at: 127.0.0.1:$(TEST_DB_PORT)"
|
|
|
|
|
@echo "For database logs run:"
|
2021-10-21 14:30:33 -04:00
|
|
|
@echo " docker logs $(TEST_CONTAINER_NAME)"
|
2021-07-30 07:56:37 -04:00
|
|
|
clean:
|
2021-10-21 14:30:33 -04:00
|
|
|
docker stop $(TEST_CONTAINER_NAME) || true
|
|
|
|
|
docker rm -v $(TEST_CONTAINER_NAME) || true
|
2021-07-30 07:56:37 -04:00
|
|
|
|
2022-04-28 13:46:04 -04:00
|
|
|
.PHONY: all docker-build database-up ${docker-buildxs} ${docker-load-buildxs} clean
|