Image

Makefile

Le fichier Makefile propose des raccourcis, réduisant le temps et les erreurs.

Le fichier Makefile propose des raccourcis, réduisant le temps et les erreurs.

  • Construire (make build)
  • Démarrer (make start)
  • Arrêter (make stop)
  • Nettoyer (make clean) les conteneurs
  • ...

Au lieu de taper de longues commandes, il permet d'exécuter des actions courantes.

Makefile

# import config.
# You can change the default config with `make cnf="config_special.env" build`
cnf ?= .env
include $(cnf)
export $(shell sed 's/=.*//' $(cnf))

# If you see pwd_unknown showing up, this is why. Re-calibrate your system.
PWD ?= pwd_unknown 

# HELP
# This will output the help for each task
# thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
.PHONY: help

help: ## aide
  @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

.DEFAULT_GOAL := help

# DOCKER TASKS
# shell is the first target. So instead of: make shell cmd="whoami", we can type: make cmd="whoami".
# more examples: make shell cmd="ls /production", make shell cmd="echo hello container space".
# leave the double quotes to prevent commands overflowing in makefile (things like && would break)
# special chars: '',"",|,&&,||,*,^,[], should all work. Except "$" and "`", if someone knows how, please let me know!).
# escaping (\) does work on most chars, except double quotes (if someone knows how, please let me know)
# i.e. works on most cases. For everything else perhaps more useful to upload a script and execute that.
CMD_ARGUMENTS ?= $(cmd)
shell:
ifeq ($(CMD_ARGUMENTS),)
  # no command is given, default to shell
  docker exec -ti $(APP_DOCKER_CONTAINER) /bin/sh
else
  # run the command
  docker exec -ti $(APP_DOCKER_CONTAINER) /bin/sh -c "$(CMD_ARGUMENTS)"
endif

dataprof: ## Ligne de commande bash avec user dataprof
  docker exec -ti -u $(APP_USER) $(APP_DOCKER_CONTAINER) /bin/bash

root: ## Ligne de commande bash avec user root
  docker exec -ti -u root $(APP_DOCKER_CONTAINER) /bin/bash

psql: ## Ligne de commande psql avec user postgres
  docker exec -ti -u postgres $(POSTGRES_DOCKER_CONTAINER) psql

build: ## build permet de builder l'image
  docker compose -f $(APP_DOCKER_COMPOSE) build

build_no_cache: ## build permet de builder l'image sans cache
  docker compose -f $(APP_DOCKER_COMPOSE) build --no-cache

service: ## Lancer le contenair en mode déttaché (background service)
  docker compose -f $(APP_DOCKER_COMPOSE) up -d

down: ## Arrêter et supprimer les conteneurs, les réseaux
  docker compose -f $(APP_DOCKER_COMPOSE) down -v

destroy: ## Arrêter et supprimer les conteneurs, les réseaux et les volumes nommés, déclarés et attachés aux conteneurs.
  docker compose -f $(APP_DOCKER_COMPOSE) rm -s -v $(APP_DOCKER_CONTAINER) 

stop: ## Stop services
  docker compose -f $(APP_DOCKER_COMPOSE) stop $(APP_DOCKER_SERVICE)

clean: destroy ## destroy > remove Nettoyer les fichiers générés/compilés
  remove

restart: stop ## stop > service Redémarre les services
  service 

remove: stop ## stop > docker rm $(APP_NAME) Arrêter et supprimer le conteneur en cours d'exécution 
  docker rm $(APP_DOCKER_CONTAINER)

pgadmin: ## docker compose -f  $(APP_DOCKER_COMPOSE) stop > up -d ${PGADMIN_DOCKER_CONTAINER} Lancer le contenair pgadmin en mode déttaché 
  docker compose -f $(APP_DOCKER_COMPOSE) stop ${PGADMIN_DOCKER_CONTAINER}
  docker compose -f $(APP_DOCKER_COMPOSE) up -d ${PGADMIN_DOCKER_CONTAINER}

logs: ## Récupérer les derniéres 100 lignes des logs d'un conteneur
  docker compose -f $(APP_DOCKER_COMPOSE) logs -f

ps: ## Liste des contenaires en cours d'éxcution du $(APP_DOCKER_COMPOSE) en question
  docker compose -f $(APP_DOCKER_COMPOSE) ps

start: down## Démarrer les contenaires du $(APP_DOCKER_COMPOSE) en question
  #docker rmi $(APP_DOCKER_IMAGE)
  #docker rmi $(POSTGRES_DOCKER_IMAGE)
  make build
  make service
Pour voir toutes les commandes, tapez uniquement make
Icon