-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
76 lines (63 loc) · 2.44 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
# Color definitions for output
RED = \e[91m
RESET = \e[0m
# Docker Compose file path
DOCKER_COMPOSE = ./srcs/docker-compose.yml
# Data paths for volumes
DATA_PATH = /home/lucperei
# Volume paths
DB_VOLUME = $(DATA_PATH)/data/db
WP_VOLUME = $(DATA_PATH)/data/wp
# Default target: setup and build the environment
all: setup build
# Setup target: create necessary directories and update hosts file
setup:
@ sudo mkdir -p $(DB_VOLUME)
@ sudo mkdir -p $(WP_VOLUME)
@ sudo sed -i "s/127.0.0.1 localhost/127.0.0.1 lucperei.42.fr/" /etc/hosts
# Build target: build and start Docker containers
build:
@ docker-compose -f $(DOCKER_COMPOSE) up --build -d
# List containers, images, volumes and network
list:
@echo "$(RED) -- CONTAINER LIST -- $(RESET)"
@docker container ls -a
@echo ""
@echo "$(RED) -- LIST OF IMAGES -- $(RESET)"
@docker image ls
@echo ""
@echo "$(RED) -- VOLUME LIST -- $(RESET)"
@docker volume ls
@echo ""
@echo "$(RED) -- LIST OF NETWORKS -- $(RESET)"
@docker network ls
# Inspect for volume details
inspect:
@echo "$(RED) -- VOLUME DETAILS -- $(RESET)"
@docker volume inspect mariadb
@docker volume inspect wordpress
# Clean target: remove containers, volumes, images, and prune unused resources
clean:
@ docker image rm debian:bullseye
@ docker-compose -f $(DOCKER_COMPOSE) down --volumes
@ docker image prune --force && docker network prune --force
@ docker-compose -f $(DOCKER_COMPOSE) down --rmi all --volumes --remove-orphans
# Full clean target: perform clean and remove data directories
fclean: clean
@ sudo rm -rf $(DATA_PATH)
# Reset target: stop and remove all Docker containers, images, volumes, and networks
reset:
@ echo "$(RED) Stopping all containers... $(RESET)"
@ docker-compose -f $(DOCKER_COMPOSE) down --volumes --remove-orphans
@echo "$(RED) Removing all containers... $(RESET)"
@docker ps -qa | xargs -r docker rm -f > /dev/null || true
@ echo "$(RED) Removing all images... $(RESET)"
@ docker images -qa | xargs -r docker rmi -f > /dev/null || true
@ echo "$(RED) Removing all volumes... $(RESET)"
@ docker volume ls -q | xargs -r docker volume rm -f > /dev/null || true
@ echo "$(RED) Removing all networks... $(RESET)"
@ docker network ls --filter type=custom --format '{{.ID}}' | xargs -r docker network rm > /dev/null || true
# Rebuild target: perform a full clean and rebuild the environment
re: fclean all
# Declare phony targets
.PHONY: all setup build list inspect clean fclean reset re