-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
105 lines (89 loc) · 3.19 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Variables
EXTERNAL_DOMAIN := briefchase.com
EMAIL := [email protected]
# Main targets
go: setup run
live: setup run-detached
clean: stop clean-config
# Helper targets
setup: install-docker install-docker-compose verify-docker create-traefik-config create-traefik-force-https-config create-acme-json create-docker-compose
run:
@sudo docker compose up
@$(MAKE) adjust-perms
run-detached:
@sudo docker compose up -d
@$(MAKE) adjust-perms
stop:
@echo "Stopping all running containers..."
@if [ -f docker-compose.yml ]; then \
sudo docker compose down; \
else \
echo "No docker-compose.yml found. Skipping docker compose down."; \
fi
@echo "All services stopped."
install-docker:
@echo "Checking for Docker installation..."
@if [ -x "$$(command -v docker)" ]; then \
echo "Docker is already installed"; \
else \
if [ ! -f "./get-docker.sh" ]; then \
echo "Downloading get-docker.sh..."; \
curl -fsSL https://get.docker.com -o get-docker.sh; \
fi; \
echo "Making get-docker.sh executable..."; \
chmod +x get-docker.sh; \
echo "Running get-docker.sh..."; \
sudo ./get-docker.sh; \
fi
install-docker-compose:
@echo "Checking for Docker Compose installation..."
@if ! docker compose version >/dev/null 2>&1; then \
echo "Docker Compose not found. Installing Docker Compose v2..."; \
sudo apt-get update; \
sudo apt-get install -y docker-compose-plugin; \
else \
echo "Docker Compose v2 is already installed."; \
fi
verify-docker:
@docker --version
@docker compose version
create-traefik-config:
@echo "Creating Traefik configuration..."
@sudo mkdir -p traefik
@sudo cp traefik/traefik.template.toml traefik/traefik.toml
@sudo -E sed -i 's|{{EMAIL}}|$(EMAIL)|g' traefik/traefik.toml
@sudo -E sed -i 's|{{EXTERNAL_DOMAIN}}|$(EXTERNAL_DOMAIN)|g' traefik/traefik.toml
@echo "Traefik configuration created."
create-traefik-force-https-config:
@echo "Creating force-https configuration..."
@sudo cp traefik/dynamic/force-https.template.toml traefik/dynamic/force-https.toml
@sudo -E sed -i 's|${{EXTERNAL_DOMAIN}}|$(EXTERNAL_DOMAIN)|g' traefik/dynamic/force-https.toml
@echo "force-https configuration created."
create-acme-json:
@echo "Creating acme.json file..."
@sudo touch traefik/acme.json
@sudo chmod 600 traefik/acme.json
@echo "acme.json file created with correct permissions."
create-docker-compose:
@echo "Creating docker-compose.yml..."
@sudo cp docker-compose.template.yml docker-compose.yml
@sudo -E sed -i "s|{{EXTERNAL_DOMAIN}}|$(EXTERNAL_DOMAIN)|g" docker-compose.yml
@echo "docker-compose.yml created."
adjust-perms:
@echo "Adjusting permissions inside the Traefik container..."
@sudo docker exec traefik_container chmod 600 /etc/traefik/acme.json
@echo "Permissions adjusted."
clean-config:
@echo "Cleaning up configuration files..."
@sudo rm -f traefik/traefik.toml
@sudo rm -f traefik/acme.json
@sudo rm -f docker-compose.yml
@echo "Configuration files removed."
docker-clean:
@echo "Stopping and removing all Docker containers..."
@sudo docker compose down --rmi all --volumes --remove-orphans
@echo "Docker environment cleaned up."
docker-nuke:
@echo "Removing all Docker data..."
@sudo docker system prune -a -f --volumes
@echo "Docker system pruned."