-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
85 lines (67 loc) · 2.58 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Load application environment variables
include ./deployments/.env
export $(shell sed 's/=.*//' deployments/.env)
help:
@echo "Available targets:"
@echo " pgdb - Start PostgreSQL container"
@echo " pgdb-stop - Stop PostgreSQL container"
@echo " pgadmin - Start pgAdmin container"
@echo " pgadmin-stop - Stop pgAdmin container"
@echo " clean - Stop and remove containers"
# Create Network for application
network:
docker network create -d bridge ${NETWORK_NAME} || true
# Create and pull the required docker images
app-img: network
docker pull golang:${GO_VERSION}-alpine${ALPINE_VERSION}
docker-compose -f ./deployments/docker-compose.yml build app
# Build the application
build:
go mod download
go mod verify
go mod tidy -v
go build -o ${APP_NAME} ./cmd/http-rest-api/...
# Run Go application container
app: network
docker-compose -f ./deployments/docker-compose.yml up -d --build app
# Stop Go application
stop:
docker compose -f ./deployments/docker-compose.yml stop app
# Remove Go application container
remove: stop
docker compose -f ./deployments/docker-compose.yml rm --force app
# Remove Docker containers and generated images
clean: stop remove
docker compose -f ./deployments/docker-compose.yml stop db
docker compose -f ./deployments/docker-compose.yml rm --force db
docker rmi -f ${APP_NAME}:${GO_VERSION}-${ALPINE_VERSION} || true
docker network rm ${NETWORK_NAME} || true
docker images -f dangling=true -q | xargs docker rmi
# PostgreSQL database
pgdb:
docker pull postgres:alpine${ALPINE_VERSION}
docker-compose -f ./deployments/docker-compose.yml up -d pgdb
pgdb-stop:
docker-compose -f ./deployments/docker-compose.yml stop pgdb
pgdb-rm: pgdb-stop
docker-compose -f ./deployments/docker-compose.yml rm --force pgdb
pgdb-clean: pgdb-rm
docker rmi -f postgres:alpine${ALPINE_VERSION} || true
# PgAdmin: default PostgreSQL GUI
pgadmin:
docker pull dpage/pgadmin4:${PGADMIN_VERSION}
docker-compose -f ./deployments/docker-compose.yml up -d pgadmin
pgadmin-stop:
docker compose -f ./deployments/docker-compose.yml stop pgadmin
pgadmin-rm: pgadmin-stop
docker compose -f ./deployments/docker-compose.yml rm --force pgadmin
pgadmin-clean: pgadmin-rm
docker rmi -f dpage/pgadmin4:${PGADMIN_VERSION} || true
# Generate mock objects
mocks:
mockery --name=UserRepo --srcpkg=./internal/service --output=./internal/service/mocks
mockery --name=UserSvc --srcpkg=./internal/controller --output=./internal/controller/mocks
# generate swagger documentation
swagger:
go install github.com/swaggo/swag/cmd/swag@latest
swag init -g cmd/http-rest-api/main.go -o ./api