43 lines
1.2 KiB
Makefile
43 lines
1.2 KiB
Makefile
GO ?= go
|
|
TIMESCALE_VERSION := pg17
|
|
MOD_NAME := nats-app
|
|
DB_NAME := nats-db
|
|
NATS_NAME := nats-sv
|
|
NATS_VERSION := 2.12.0-alpine3.22
|
|
|
|
.PHONY: dockerize-db
|
|
# Remove and create a development database.
|
|
dockerize-db:
|
|
docker rm -f $(DB_NAME)
|
|
docker run --name $(DB_NAME) -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=developer -e POSTGRES_DB=$(DB_NAME) -p 5432:5432 -d timescale/timescaledb-ha:$(TIMESCALE_VERSION)
|
|
sleep 10
|
|
make migrateup
|
|
|
|
.PHONY: dockerize-nats
|
|
# Remove and create a NATS server.
|
|
dockerize-nats:
|
|
docker rm -f $(NATS_NAME)
|
|
docker run --name $(NATS_NAME) -p 4222:4222 -d nats:$(NATS_VERSION)
|
|
sleep 5
|
|
|
|
.PHONY: migrateup
|
|
# Migrate all schemas, triggers and data located in database/migrations.
|
|
migrateup:
|
|
go run -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest -path app/database -database "postgresql://developer:secret@localhost:5432/$(DB_NAME)?sslmode=disable" -verbose up
|
|
|
|
.PHONY: run
|
|
# Start app in development environment
|
|
run:
|
|
go run ./app/.
|
|
|
|
.PHONY: run-prod
|
|
run-prod:
|
|
# Start app in production environment
|
|
go run ./app/. -env=prod
|
|
|
|
.PHONY: lazy-start
|
|
lazy-start:
|
|
# Install dependencies, tools, dockerize containers, run tests and run app.
|
|
make dockerize-db
|
|
make dockerize-nats
|
|
make run-prod
|