-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
100 lines (82 loc) · 3.32 KB
/
Copy pathMakefile
File metadata and controls
100 lines (82 loc) · 3.32 KB
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
COMPOSE_FILE := srcs/docker-compose.yml
DOMAIN := mkhavari.42.fr
HOSTS_FILE := /etc/hosts
DATA_DIR := /home/mkhavari/data
SECRETS_DIR := secrets
all: hosts data build
docker compose -f $(COMPOSE_FILE) up -d
hosts:
@grep -q "$(DOMAIN)" $(HOSTS_FILE) || \
echo "127.0.0.1 $(DOMAIN)" | sudo tee -a $(HOSTS_FILE) > /dev/null
data:
@sudo mkdir -p $(DATA_DIR)/wordpress $(DATA_DIR)/mariadb $(DATA_DIR)/portainer
secrets:
@mkdir -p $(SECRETS_DIR)
@[ -f $(SECRETS_DIR)/db_root_password.txt ] || openssl rand -base64 32 | tr -d "=+/" | cut -c1-25 > $(SECRETS_DIR)/db_root_password.txt
@[ -f $(SECRETS_DIR)/db_password.txt ] || openssl rand -base64 32 | tr -d "=+/" | cut -c1-25 > $(SECRETS_DIR)/db_password.txt
@[ -f $(SECRETS_DIR)/wp_admin_password.txt ] || openssl rand -base64 32 | tr -d "=+/" | cut -c1-25 > $(SECRETS_DIR)/wp_admin_password.txt
@[ -f $(SECRETS_DIR)/wp_user_password.txt ] || openssl rand -base64 32 | tr -d "=+/" | cut -c1-25 > $(SECRETS_DIR)/wp_user_password.txt
@[ -f $(SECRETS_DIR)/ftp_password.txt ] || openssl rand -base64 32 | tr -d "=+/" | cut -c1-25 > $(SECRETS_DIR)/ftp_password.txt
@[ -f $(SECRETS_DIR)/portainer_pass.txt ] || openssl rand -base64 32 | tr -d "=+/" | cut -c1-25 > $(SECRETS_DIR)/portainer_pass.txt
@chmod 600 $(SECRETS_DIR)/*.txt
@echo "Secrets generated in $(SECRETS_DIR)/"
# remove conainers
down:
docker compose -f $(COMPOSE_FILE) down
up:
docker compose -f $(COMPOSE_FILE) up -d
# stop container make stop
stop:
docker compose -f $(COMPOSE_FILE) stop
start:
docker compose -f $(COMPOSE_FILE) start
# list all container
ps:
docker compose -f $(COMPOSE_FILE) ps
# restart conainer make restart
restart:
docker compose -f $(COMPOSE_FILE) restart
#Dockerfile changed
#entrypoint.sh changed
#packages changed
#WP-CLI installation changed
build:
docker compose -f $(COMPOSE_FILE) build
rm-keep-volumes:
docker compose -f $(COMPOSE_FILE) down --rmi all
# Keeps everything: volumes + secrets + data (safe rebuild)
rebuild-volumes:
docker compose -f $(COMPOSE_FILE) down --rmi all
docker compose -f $(COMPOSE_FILE) build
docker compose -f $(COMPOSE_FILE) up -d
@echo "✓ Rebuilt with volumes & secrets intact"
# Reset database but keep host data (delete Docker volumes only)
reset-db:
docker compose -f $(COMPOSE_FILE) down --volumes --rmi all
docker compose -f $(COMPOSE_FILE) build
docker compose -f $(COMPOSE_FILE) up -d
@echo "✓ Database reset, code/config kept"
# Full nuclear reset (everything gone)
# fclean already does this
# remove volumes, delete data base
clean: down
docker compose -f $(COMPOSE_FILE) down --rmi all --volumes --remove-orphans
docker system prune -af
# Remove host data directory
fclean: clean
sudo rm -rf $(DATA_DIR)
@echo "Volumes was deleted"
sudo rm -rf $(SECRETS_DIR)
@echo "secrets was deleted, run secrest next start!"
# Rebuild everything from scratch
re: fclean all
.PHONY: all hosts data secrets down stop start ps restart build clean fclean re
#docker-config:
# @echo "Configuring Docker data-root..."
# @sudo mkdir -p /home/mkhavari/data
# @echo '{ "data-root": "/home/mkhavari/data" }' | sudo tee /etc/docker/daemon.json > /dev/null
# @echo "Restarting Docker..."
# @sudo systemctl stop docker
# @sudo systemctl stop containerd
# @sudo systemctl start docker
# @echo "Docker data-root configured at /home/mkhavari/data"