|
| 1 | +include .env |
| 2 | +IMG_NAME = "ghcr.io/libertech-fr/sesame-deamon" |
| 3 | +BASE_NAME = "sesame" |
| 4 | +APP_NAME = "sesame-deamon" |
| 5 | +PLATFORM = "linux/amd64" |
| 6 | + |
| 7 | +.DEFAULT_GOAL := help |
| 8 | +help: |
| 9 | + @printf "\033[33mUsage:\033[0m\n make [target] [arg=\"val\"...]\n\n\033[33mTargets:\033[0m\n" |
| 10 | + @grep -E '^[-a-zA-Z0-9_\.\/]+:.*?## .*$$' $(MAKEFILE_LIST) \ |
| 11 | + | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[32m%-15s\033[0m %s\n", $$1, $$2}' |
| 12 | + |
| 13 | +build: ## Build the container |
| 14 | + @docker build --platform $(PLATFORM) -t $(IMG_NAME) . |
| 15 | + |
| 16 | +dev: ## Start development environment |
| 17 | + @docker run --rm -it \ |
| 18 | + -e NODE_ENV=development \ |
| 19 | + -e NODE_TLS_REJECT_UNAUTHORIZED=0 \ |
| 20 | + --add-host host.docker.internal:host-gateway \ |
| 21 | + --network dev \ |
| 22 | + --platform $(PLATFORM) \ |
| 23 | + --name $(APP_NAME) \ |
| 24 | + -v $(CURDIR):/data \ |
| 25 | + $(IMG_NAME) yarn start:dev |
| 26 | + |
| 27 | +install: ## Install dependencies |
| 28 | + @docker run -it --rm \ |
| 29 | + -e NODE_ENV=development \ |
| 30 | + -e NODE_TLS_REJECT_UNAUTHORIZED=0 \ |
| 31 | + --add-host host.docker.internal:host-gateway \ |
| 32 | + --platform $(PLATFORM) \ |
| 33 | + --network dev \ |
| 34 | + -v $(CURDIR):/data \ |
| 35 | + $(IMG_NAME) yarn install |
| 36 | + |
| 37 | +exec: ## Run a shell in the container |
| 38 | + @docker run -it --rm \ |
| 39 | + -e NODE_ENV=development \ |
| 40 | + -e NODE_TLS_REJECT_UNAUTHORIZED=0 \ |
| 41 | + --add-host host.docker.internal:host-gateway \ |
| 42 | + --platform $(PLATFORM) \ |
| 43 | + --network dev \ |
| 44 | + -v $(CURDIR):/data \ |
| 45 | + $(IMG_NAME) sh |
| 46 | + |
| 47 | +dbs: ## Start databases |
| 48 | + @docker volume create $(BASE_NAME)-mongodb |
| 49 | + @docker run -d --rm \ |
| 50 | + --name $(BASE_NAME)-mongodb \ |
| 51 | + -v $(BASE_NAME)-mongodb:/data/db \ |
| 52 | + -p 27017:27017 \ |
| 53 | + -e MONGODB_REPLICA_SET_MODE=primary \ |
| 54 | + -e MONGODB_REPLICA_SET_NAME=rs0 \ |
| 55 | + -e ALLOW_EMPTY_PASSWORD=yes \ |
| 56 | + --platform $(PLATFORM) \ |
| 57 | + --network dev \ |
| 58 | + --health-interval=5s \ |
| 59 | + --health-timeout=3s \ |
| 60 | + --health-start-period=5s \ |
| 61 | + --health-retries=3 \ |
| 62 | + --health-cmd="mongo --eval \"db.stats().ok\" || exit 1" \ |
| 63 | + mongo:7.0 --replSet rs0 --wiredTigerCacheSizeGB 1.5 || true |
| 64 | + @docker volume create $(BASE_NAME)-redis |
| 65 | + @docker run -d --rm \ |
| 66 | + --name $(BASE_NAME)-redis \ |
| 67 | + -v $(BASE_NAME)-redis:/data \ |
| 68 | + --platform $(PLATFORM) \ |
| 69 | + --network dev \ |
| 70 | + -p 6379:6379 \ |
| 71 | + --health-interval=5s \ |
| 72 | + --health-timeout=3s \ |
| 73 | + --health-start-period=5s \ |
| 74 | + --health-retries=3 \ |
| 75 | + --health-cmd="redis-cli ping || exit 1" \ |
| 76 | + redis || true |
| 77 | + @docker exec -it $(BASE_NAME)-mongodb mongosh --eval "rs.initiate({_id: 'rs0', members: [{_id: 0, host: '127.0.0.1:27017'}]})" || true |
| 78 | + |
| 79 | +stop: ## Stop the container |
| 80 | + @docker stop $(APP_NAME) || true |
| 81 | + @docker stop $(BASE_NAME)-mongodb || true |
| 82 | + @docker stop $(BASE_NAME)-redis || true |
0 commit comments