APP_NAME = caravan-builder-be-docker-app
DOCKER_FILE = Dockerfile
IMAGE_TAG = $(APP_NAME)
CONTAINER_NAME = caravan-builder-be-docker-container
HOST_PORT = 8999
CONTAINER_PORT = 8000

.PHONY: build run run-prod dev clean rebuild stop

# Build the Docker image for a specific environment
build:
	@read -p "Enter environment (development/production): " NODE_ENV; \
	docker build --build-arg NODE_ENV=$$NODE_ENV -t $(IMAGE_TAG):$$NODE_ENV .

# Run the Docker container in development mode
run:
	docker run -d --restart unless-stopped --name $(CONTAINER_NAME) -p $(HOST_PORT):$(CONTAINER_PORT) $(IMAGE_TAG):development

# Run the Docker container for production
run-prod:
	docker run -d --restart unless-stopped --name $(CONTAINER_NAME) -p $(HOST_PORT):$(CONTAINER_PORT) $(IMAGE_TAG):production

# Stop the running container
stop:
	docker stop $(CONTAINER_NAME) || true
	docker rm $(CONTAINER_NAME) || true

# Development run (use volumes for code changes)
dev:
	docker run --restart unless-stopped --name $(CONTAINER_NAME) -p $(HOST_PORT):$(CONTAINER_PORT) -v $(PWD):/usr/src/app -e NODE_ENV=development $(IMAGE_TAG):development

# Rebuild the Docker image
rebuild:
	docker build -t $(IMAGE_TAG):development .
	docker build -t $(IMAGE_TAG):production .

# Clean up Docker images
clean: stop
	docker rmi $(IMAGE_TAG):development $(IMAGE_TAG):production || true