96 lines
No EOL
2.5 KiB
Makefile
96 lines
No EOL
2.5 KiB
Makefile
# Configuration
|
|
IMAGE_NAME := greenmatthew/scp-secret-laboratory-server
|
|
VERSION := 1.0.0
|
|
CONTAINER_NAME := scp-sl-server
|
|
PORT := 7777
|
|
SHELL := /bin/sh
|
|
DOCKER_USERNAME ?= greenmatthew
|
|
|
|
# Default goal
|
|
.PHONY: all
|
|
all: build
|
|
|
|
# Build the Docker image
|
|
.PHONY: build
|
|
build:
|
|
@echo "Building Docker image: $(IMAGE_NAME):$(VERSION)"
|
|
docker build -t $(IMAGE_NAME):$(VERSION) .
|
|
docker tag $(IMAGE_NAME):$(VERSION) $(IMAGE_NAME):latest
|
|
|
|
# Run the container
|
|
.PHONY: run
|
|
run: build
|
|
@echo "Running container: $(CONTAINER_NAME)"
|
|
docker run -d --name $(CONTAINER_NAME) \
|
|
-p $(PORT):$(PORT)/udp \
|
|
-v $(PWD)/config:/home/steam/config \
|
|
-e UID=1001 \
|
|
-e GID=1001 \
|
|
--restart unless-stopped \
|
|
$(IMAGE_NAME):latest
|
|
|
|
# Get a shell inside the container
|
|
.PHONY: shell
|
|
shell:
|
|
@echo "Executing shell in container: $(CONTAINER_NAME)"
|
|
docker exec -it $(CONTAINER_NAME) $(SHELL)
|
|
|
|
# Stop the container
|
|
.PHONY: stop
|
|
stop:
|
|
@echo "Stopping container: $(CONTAINER_NAME)"
|
|
-docker stop $(CONTAINER_NAME)
|
|
-docker rm $(CONTAINER_NAME)
|
|
|
|
# Restart the container
|
|
.PHONY: restart
|
|
restart: stop run
|
|
|
|
# Push to Docker Hub
|
|
.PHONY: push
|
|
push:
|
|
@echo "Pushing to Docker Hub: $(IMAGE_NAME):$(VERSION) and $(IMAGE_NAME):latest"
|
|
docker push $(IMAGE_NAME):$(VERSION)
|
|
docker push $(IMAGE_NAME):latest
|
|
|
|
# Login to Docker Hub
|
|
.PHONY: login
|
|
login:
|
|
@echo "Logging into Docker Hub..."
|
|
docker login -u $(DOCKER_USERNAME)
|
|
|
|
# Remove Docker image
|
|
.PHONY: clean
|
|
clean: stop
|
|
@echo "Removing Docker image: $(IMAGE_NAME)"
|
|
-docker rmi $(IMAGE_NAME):$(VERSION)
|
|
-docker rmi $(IMAGE_NAME):latest
|
|
|
|
# Show help
|
|
.PHONY: help
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " all (default) - Build the Docker image"
|
|
@echo " build - Build the Docker image"
|
|
@echo " run - Run the container"
|
|
@echo " shell - Get a shell inside the running container"
|
|
@echo " stop - Stop and remove the container"
|
|
@echo " restart - Restart the container"
|
|
@echo " push - Push the image to Docker Hub"
|
|
@echo " login - Login to Docker Hub"
|
|
@echo " clean - Stop container and remove images"
|
|
@echo " logs - View container logs"
|
|
@echo " help - Show this help message"
|
|
@echo ""
|
|
@echo "Configuration:"
|
|
@echo " IMAGE_NAME = $(IMAGE_NAME)"
|
|
@echo " VERSION = $(VERSION)"
|
|
@echo " CONTAINER_NAME = $(CONTAINER_NAME)"
|
|
@echo " PORT = $(PORT)"
|
|
@echo " SHELL = $(SHELL)"
|
|
@echo " DOCKER_USERNAME = $(DOCKER_USERNAME)"
|
|
|
|
# View container logs
|
|
.PHONY: logs
|
|
logs:
|
|
docker logs -f $(CONTAINER_NAME)
|