makefile retrieve volumes directories from env variables
This commit is contained in:
118
Makefile
118
Makefile
@@ -1,104 +1,62 @@
|
|||||||
|
|
||||||
GRAY = "\e[0;30m"
|
GRAY := "\e[0;30m"
|
||||||
RED = "\e[0;31m"
|
RED := "\e[0;31m"
|
||||||
GREEN = "\e[0;32m"
|
GREEN := "\e[0;32m"
|
||||||
YELLOW = "\e[0;33m"
|
YELLOW := "\e[0;33m"
|
||||||
BLUE = "\e[0;34m"
|
BLUE := "\e[0;34m"
|
||||||
PURPLE = "\e[0;35m"
|
PURPLE := "\e[0;35m"
|
||||||
CYAN = "\e[0;36m"
|
CYAN := "\e[0;36m"
|
||||||
WHITE = "\e[0;37m"
|
WHITE := "\e[0;37m"
|
||||||
|
|
||||||
B_GRAY = "\e[1;30m"
|
B_GRAY := "\e[1;30m"
|
||||||
B_RED = "\e[1;31m"
|
B_RED := "\e[1;31m"
|
||||||
B_GREEN = "\e[1;32m"
|
B_GREEN := "\e[1;32m"
|
||||||
B_YELLOW = "\e[1;33m"
|
B_YELLOW := "\e[1;33m"
|
||||||
B_BLUE = "\e[1;34m"
|
B_BLUE := "\e[1;34m"
|
||||||
B_PURPLE = "\e[1;35m"
|
B_PURPLE := "\e[1;35m"
|
||||||
B_CYAN = "\e[1;36m"
|
B_CYAN := "\e[1;36m"
|
||||||
B_WHITE = "\e[1;37m"
|
B_WHITE := "\e[1;37m"
|
||||||
|
|
||||||
RESET = "\e[0m"
|
RESET := "\e[0m"
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
||||||
|
# . name = value \ . := no reevaluat when used #
|
||||||
|
# VARIABLES . value . != set result of command #
|
||||||
|
# . name is case sensitive . ?= set if not already set #
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
||||||
|
|
||||||
COMPOSE_FILE = ./srcs/docker-compose.yml
|
COMPOSE_FILE := ./srcs/docker-compose.yml
|
||||||
|
ENV_PATH := ./srcs/.env
|
||||||
|
|
||||||
# in makefile you can use an env variable directly as a make variable :
|
# list of volumes
|
||||||
# -> https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_6.html#SEC68
|
SOURCE_ENV := . $(ENV_PATH)
|
||||||
# so if you want to get the home directory you can use $(HOME)
|
VOLUME_ENV := set | grep "^HOST_VOLUME_" | cut -d "=" -f 2
|
||||||
# however, this will not give the same result if you run make in sudo, ex :
|
VOLUMES_D = $(shell $(SOURCE_ENV) ; $(VOLUME_ENV) )
|
||||||
# make : /home/asususus
|
|
||||||
# sudo make : /root
|
|
||||||
# but you can use this command `eval echo "~$SUDO_USER"` to get
|
|
||||||
# the home directory of the user using sudo, it works in non-sudo also :
|
|
||||||
# - echo "$SUDO_USER" :
|
|
||||||
# - in normal mode it output : ""
|
|
||||||
# - in sudo mode it output the user : "username"
|
|
||||||
# - same as $USER in normal mode
|
|
||||||
# - echo "~$SUDO_USER" :
|
|
||||||
# - in linux "~USER" is the home directory of a user
|
|
||||||
# - but echo "something" will treat ~ as a string litteral
|
|
||||||
# - so the output in mormal mode will be : "~"
|
|
||||||
# - and in sudo mode it will be : "~username"
|
|
||||||
# - eval echo "~$SUDO_USER" :
|
|
||||||
# - eval will evaluate the expression and perform expansion one more time
|
|
||||||
# - so it will evaluate the output of `echo "~$SUDO_USER"`
|
|
||||||
# - in normal mode :
|
|
||||||
# - it will evaluate : "~"
|
|
||||||
# - and ouptput : "/home/username"
|
|
||||||
# - in sudo mode :
|
|
||||||
# - it will evaluate : "~username"
|
|
||||||
# - and output : "/home/username"
|
|
||||||
# - because "~username" expand in the home (~) directory of given user
|
|
||||||
# https://stackoverflow.com/questions/77088135/makefile-subst-doesnt-use-make-variable-as-expected
|
|
||||||
USER_HOME := $(shell eval echo "~$$SUDO_USER")
|
|
||||||
# extract env variables in .env file
|
|
||||||
# then expend the home path
|
|
||||||
# then expend the pwd path
|
|
||||||
# and finally remove the leading "EXPEND_" word
|
|
||||||
EXPENDED_ENV_VAR := $(shell grep "^#EXPEND_" ./srcs/.env)
|
|
||||||
EXPENDED_ENV_VAR := $(subst $$HOME_PATH,$(USER_HOME),$(EXPENDED_ENV_VAR))
|
|
||||||
EXPENDED_ENV_VAR := $(subst $$PWD_PATH,$(shell pwd),$(EXPENDED_ENV_VAR))
|
|
||||||
EXPENDED_ENV_VAR := $(EXPENDED_ENV_VAR:#EXPEND_%=%)
|
|
||||||
|
|
||||||
# this creates a list of the path from the list of the variables :
|
|
||||||
# VAR_1=/path/to_1 VAR_2=/path/to_2
|
|
||||||
# becomes :
|
|
||||||
# /path/to_1 /path/to_2
|
|
||||||
# first, foreach execute an action on each space separated parts : the variables
|
|
||||||
# - VAR_1=/path/to_1
|
|
||||||
# - VAR_2=/path/to_2
|
|
||||||
# then on each of them, it substitute the "=" with a space " " :
|
|
||||||
# - VAR_1 /path/to_1
|
|
||||||
# - VAR_2 /path/to_2
|
|
||||||
# and it only keeps the second word :
|
|
||||||
# - /path/to_1
|
|
||||||
# - /path/to_2
|
|
||||||
VOLUMES_D = $(foreach val,$(EXPENDED_ENV_VAR),$(word 2, $(subst =, ,$(val))))
|
|
||||||
|
|
||||||
# url for wordpress, use in makefile to change local
|
# url for wordpress, use in makefile to change local
|
||||||
WP_URL = $(shell grep "WP_URL" ./srcs/.env | cut -d "=" -f 2)
|
WP_URL := $(shell grep "WP_URL" $(ENV_PATH) | cut -d "=" -f 2)
|
||||||
|
|
||||||
# list of running containers, see : https://stackoverflow.com/questions/10024279/how-to-use-shell-commands-in-makefile
|
# list of running containers, see : https://stackoverflow.com/questions/10024279/how-to-use-shell-commands-in-makefile
|
||||||
RUNNING = $(shell docker ps -q)
|
RUNNING := $(shell docker ps -q)
|
||||||
# list of volumes
|
# list of volumes
|
||||||
VOLUMES = $(shell docker volume ls -q)
|
VOLUMES := $(shell docker volume ls -q)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
||||||
|
# . target: prerequisites . $@ : target #
|
||||||
|
# RULES . recipe . $< : 1st prerequisite #
|
||||||
|
# . recipe . $^ : all prerequisites #
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
|
||||||
|
|
||||||
|
|
||||||
all: require build up
|
all: require build up
|
||||||
logs: require build_logs up
|
logs: require build_logs up
|
||||||
|
|
||||||
require:
|
require:
|
||||||
# remove all the lines starting with "HOST_VOLUME_" in .env
|
# create .env file
|
||||||
@echo $(B_PURPLE)"removes all lines starting with 'HOST_VOLUMES' in .env"$(RESET)
|
@echo $(B_PURPLE)"create the .env file"$(RESET)
|
||||||
sed -i "/^HOST_VOLUME_/d" ./srcs/.env
|
./srcs/env_generator/create_env.sh ./srcs/model.env
|
||||||
# add new expended lines starting with "HOST_VOLUME_" after the line "# EXPENDED LINES :" in .env
|
|
||||||
@echo $(B_PURPLE)"add new expended lines starting with 'HOST_VOLUME_' in .env"$(RESET)
|
|
||||||
$(foreach val,$(EXPENDED_ENV_VAR),sed -i "/^# EXPENDED LINES/a\$(val)" ./srcs/.env;)
|
|
||||||
# create the volumes directories
|
# create the volumes directories
|
||||||
@echo $(B_PURPLE)"create the volumes directories"$(RESET)
|
@echo $(B_PURPLE)"create the volumes directories"$(RESET)
|
||||||
mkdir -p $(VOLUMES_D)
|
mkdir -p $(VOLUMES_D)
|
||||||
@@ -106,7 +64,7 @@ require:
|
|||||||
@echo $(B_PURPLE)"verify if the wordpress url is added to the local path"$(RESET)
|
@echo $(B_PURPLE)"verify if the wordpress url is added to the local path"$(RESET)
|
||||||
- if ! grep "127.0.0.1 $(WP_URL)" /etc/hosts 2> /dev/null; then \
|
- if ! grep "127.0.0.1 $(WP_URL)" /etc/hosts 2> /dev/null; then \
|
||||||
echo $(B_PURPLE)"nop ! adding it"$(RESET) \
|
echo $(B_PURPLE)"nop ! adding it"$(RESET) \
|
||||||
bash -c 'echo -e "\n# adding for lejourduprof (you can delete it)\n127.0.0.1 $(WP_URL)" >> /etc/hosts';
|
bash -c 'echo -e "\n# adding for lejourduprof (you can delete it)\n127.0.0.1 $(WP_URL)" >> /etc/hosts'; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
|||||||
16
srcs/.env
16
srcs/.env
@@ -1,22 +1,18 @@
|
|||||||
DB_HOST=mariadb
|
DB_HOST=mariadb
|
||||||
DB_NAME=db_wp_inception
|
DB_NAME=db_wp_jipf
|
||||||
DB_PSWD='too bad you have read this now i have to erase your memory'
|
DB_PSWD='you dont want to know'
|
||||||
DB_USER=user_wp_inception
|
DB_USER=user_wp_jipf
|
||||||
EXECUTION_TIME=300
|
EXECUTION_TIME=300
|
||||||
HOME_PATH=/home/asususus
|
HOME_PATH=/home/asususus
|
||||||
HOST_VOLUME_DB=/home/asususus/data/lejourduprof/db_volume
|
HOST_VOLUME_DB=/home/asususus/data/lejourduprof/db_volume
|
||||||
HOST_VOLUME_PLUGINS=/srcs/plugins
|
|
||||||
HOST_VOLUME_WP=/home/asususus/data/lejourduprof/wp_volume
|
HOST_VOLUME_WP=/home/asususus/data/lejourduprof/wp_volume
|
||||||
MAX_UPLOAD_SIZE=512
|
MAX_UPLOAD_SIZE=512
|
||||||
NG_VOLUME_CERTS=/etc/ssl
|
NG_VOLUME_CERTS=/etc/ssl
|
||||||
WP_ADMIN_EMAIL=hulamy@42.fr
|
PROJECT=jipf
|
||||||
WP_ADMIN=hulamy
|
WP_ADMIN=admin
|
||||||
|
WP_ADMIN_EMAIL=admin@email.fr
|
||||||
WP_ADMIN_PSWD='you shall not password !'
|
WP_ADMIN_PSWD='you shall not password !'
|
||||||
WP_PORT=3003
|
WP_PORT=3003
|
||||||
WP_TITLE=title
|
WP_TITLE=title
|
||||||
WP_URL=local_lejourduprof.com
|
WP_URL=local_lejourduprof.com
|
||||||
WP_USER_EMAIL=moehu36@42.fr
|
|
||||||
WP_USER=moehu36
|
|
||||||
WP_USER_PSWD='it'\''s a secret for nobody'
|
|
||||||
WP_VOLUME_DIR=/var/www/html
|
WP_VOLUME_DIR=/var/www/html
|
||||||
WP_VOLUME_PLUGINS=/home/www-data
|
|
||||||
|
|||||||
@@ -17,14 +17,12 @@ services:
|
|||||||
- "${WP_PORT}:443"
|
- "${WP_PORT}:443"
|
||||||
volumes:
|
volumes:
|
||||||
- wp_volume:${WP_VOLUME_DIR}
|
- wp_volume:${WP_VOLUME_DIR}
|
||||||
- wp_plugins:${WP_VOLUME_PLUGINS}
|
|
||||||
build:
|
build:
|
||||||
context: ./requirements/nginx
|
context: ./requirements/nginx
|
||||||
args:
|
args:
|
||||||
- WP_URL=${WP_URL}
|
- WP_URL=${WP_URL}
|
||||||
- MAX_UPLOAD_SIZE=${MAX_UPLOAD_SIZE}
|
- MAX_UPLOAD_SIZE=${MAX_UPLOAD_SIZE}
|
||||||
- WP_VOLUME_DIR=${WP_VOLUME_DIR}
|
- WP_VOLUME_DIR=${WP_VOLUME_DIR}
|
||||||
- WP_VOLUME_PLUGINS=${WP_VOLUME_PLUGINS}
|
|
||||||
- NG_VOLUME_CERTS=${NG_VOLUME_CERTS}
|
- NG_VOLUME_CERTS=${NG_VOLUME_CERTS}
|
||||||
image: nginx
|
image: nginx
|
||||||
container_name: nginx_container
|
container_name: nginx_container
|
||||||
@@ -61,12 +59,10 @@ services:
|
|||||||
- inception
|
- inception
|
||||||
volumes:
|
volumes:
|
||||||
- wp_volume:${WP_VOLUME_DIR}
|
- wp_volume:${WP_VOLUME_DIR}
|
||||||
- wp_plugins:${WP_VOLUME_PLUGINS}
|
|
||||||
build:
|
build:
|
||||||
context: ./requirements/wordpress
|
context: ./requirements/wordpress
|
||||||
args:
|
args:
|
||||||
- WP_VOLUME_DIR=${WP_VOLUME_DIR}
|
- WP_VOLUME_DIR=${WP_VOLUME_DIR}
|
||||||
- WP_VOLUME_PLUGINS=${WP_VOLUME_PLUGINS}
|
|
||||||
- MAX_UPLOAD_SIZE=${MAX_UPLOAD_SIZE}
|
- MAX_UPLOAD_SIZE=${MAX_UPLOAD_SIZE}
|
||||||
- EXECUTION_TIME=${EXECUTION_TIME}
|
- EXECUTION_TIME=${EXECUTION_TIME}
|
||||||
image: wordpress
|
image: wordpress
|
||||||
@@ -89,12 +85,6 @@ volumes:
|
|||||||
type: none
|
type: none
|
||||||
o: "bind"
|
o: "bind"
|
||||||
device: ${HOST_VOLUME_WP}
|
device: ${HOST_VOLUME_WP}
|
||||||
wp_plugins:
|
|
||||||
driver: local
|
|
||||||
driver_opts:
|
|
||||||
type: none
|
|
||||||
o: "bind"
|
|
||||||
device: ${HOST_VOLUME_PLUGINS}
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
inception:
|
inception:
|
||||||
|
|||||||
0
srcs/env_generator/create_env.sh
Normal file → Executable file
0
srcs/env_generator/create_env.sh
Normal file → Executable file
@@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
PROJECT=jipf
|
||||||
|
|
||||||
# NGINX SETUP
|
# NGINX SETUP
|
||||||
|
|
||||||
NG_VOLUME_CERTS=/etc/ssl
|
NG_VOLUME_CERTS=/etc/ssl
|
||||||
@@ -7,25 +9,21 @@ MAX_UPLOAD_SIZE=512
|
|||||||
# MARIADB SETUP
|
# MARIADB SETUP
|
||||||
|
|
||||||
DB_HOST=mariadb
|
DB_HOST=mariadb
|
||||||
DB_NAME=db_wp_inception
|
DB_NAME=db_wp_${PROJECT}
|
||||||
DB_USER=user_wp_inception
|
DB_USER=user_wp_${PROJECT}
|
||||||
DB_PSWD="too bad you have read this now i have to erase your memory"
|
DB_PSWD="you dont want to know"
|
||||||
|
|
||||||
# WORDPRESS SETUP
|
# WORDPRESS SETUP
|
||||||
|
|
||||||
WP_URL=local_lejourduprof.com
|
WP_URL=local_lejourduprof.com
|
||||||
WP_PORT=3003
|
WP_PORT=3003
|
||||||
WP_VOLUME_DIR=/var/www/html
|
WP_VOLUME_DIR=/var/www/html
|
||||||
WP_VOLUME_PLUGINS=/home/www-data
|
#WP_VOLUME_PLUGINS=/home/www-data
|
||||||
WP_TITLE=title
|
WP_TITLE=title
|
||||||
|
|
||||||
WP_ADMIN=hulamy
|
WP_ADMIN=admin
|
||||||
WP_ADMIN_PSWD="you shall not password !"
|
WP_ADMIN_PSWD="you shall not password !"
|
||||||
WP_ADMIN_EMAIL=hulamy@42.fr
|
WP_ADMIN_EMAIL=admin@email.fr
|
||||||
|
|
||||||
WP_USER=moehu36
|
|
||||||
WP_USER_PSWD="it's a secret for nobody"
|
|
||||||
WP_USER_EMAIL=moehu36@42.fr
|
|
||||||
|
|
||||||
# MAP
|
# MAP
|
||||||
|
|
||||||
@@ -61,5 +59,4 @@ HOME_PATH=$(eval echo "~$SUDO_USER")
|
|||||||
|
|
||||||
HOST_VOLUME_WP=${HOME_PATH}/data/lejourduprof/wp_volume
|
HOST_VOLUME_WP=${HOME_PATH}/data/lejourduprof/wp_volume
|
||||||
HOST_VOLUME_DB=${HOME_PATH}/data/lejourduprof/db_volume
|
HOST_VOLUME_DB=${HOME_PATH}/data/lejourduprof/db_volume
|
||||||
HOST_VOLUME_PLUGINS=${PWD_PATH}/srcs/plugins
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ RUN adduser -S www-data && \
|
|||||||
ARG WP_URL
|
ARG WP_URL
|
||||||
ARG MAX_UPLOAD_SIZE
|
ARG MAX_UPLOAD_SIZE
|
||||||
ARG WP_VOLUME_DIR
|
ARG WP_VOLUME_DIR
|
||||||
ARG WP_VOLUME_PLUGINS
|
|
||||||
ARG NG_VOLUME_CERTS
|
ARG NG_VOLUME_CERTS
|
||||||
|
|
||||||
# replace WP_URL
|
# replace WP_URL
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ COPY ./conf/www.conf /etc/php7/php-fpm.d/
|
|||||||
RUN mkdir /run/php/
|
RUN mkdir /run/php/
|
||||||
|
|
||||||
ARG WP_VOLUME_DIR
|
ARG WP_VOLUME_DIR
|
||||||
ARG WP_VOLUME_PLUGINS
|
|
||||||
ARG MAX_UPLOAD_SIZE
|
ARG MAX_UPLOAD_SIZE
|
||||||
ARG EXECUTION_TIME
|
ARG EXECUTION_TIME
|
||||||
|
|
||||||
|
|||||||
@@ -61,26 +61,16 @@ then
|
|||||||
--skip-email \
|
--skip-email \
|
||||||
--path="${WP_VOLUME_DIR}" --allow-root
|
--path="${WP_VOLUME_DIR}" --allow-root
|
||||||
|
|
||||||
#wp user create \
|
|
||||||
echo -e ${YELLOW}wp user create...${RESET}
|
|
||||||
php wp-cli.phar user create \
|
|
||||||
"${WP_USER}" "${WP_USER_EMAIL}" \
|
|
||||||
--user_pass="${WP_USER_PSWD}" \
|
|
||||||
--path="${WP_VOLUME_DIR}" --allow-root
|
|
||||||
|
|
||||||
echo -e ${YELLOW}chown and chmod...${RESET}
|
echo -e ${YELLOW}chown and chmod...${RESET}
|
||||||
chown -R www-data:www-data /var/www/*
|
chown -R www-data:www-data /var/www/*
|
||||||
chmod 755 -R /var/www/*
|
chmod 755 -R /var/www/*
|
||||||
|
|
||||||
echo -e ${YELLOW}plugins...${RESET}
|
|
||||||
plugins=$(ls ${WP_VOLUME_PLUGINS})
|
|
||||||
for dir in $plugins; do
|
|
||||||
ln -s ${WP_VOLUME_PLUGINS}/$dir ${WP_VOLUME_DIR}/wp-content/plugins/$dir
|
|
||||||
done
|
|
||||||
echo -e ${GREEN}done !${RESET}
|
echo -e ${GREEN}done !${RESET}
|
||||||
|
|
||||||
else
|
else
|
||||||
echo -e ${GREEN}wp is installed${RESET}
|
echo -e ${GREEN}wp is installed${RESET}
|
||||||
|
|
||||||
|
#https://stackoverflow.com/questions/56344567/wordpress-prevent-redirection-to-main-url
|
||||||
echo -e ${YELLOW}checking config.php file with current url...${RESET}
|
echo -e ${YELLOW}checking config.php file with current url...${RESET}
|
||||||
HOME=$(php wp-cli.phar config get WP_HOME --path=${WP_VOLUME_DIR})
|
HOME=$(php wp-cli.phar config get WP_HOME --path=${WP_VOLUME_DIR})
|
||||||
if [ ${HOME} != ${COMPLETE_URL} ] ; then
|
if [ ${HOME} != ${COMPLETE_URL} ] ; then
|
||||||
@@ -93,20 +83,5 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# HOME=$(php wp-cli.phar config get WP_HOME --path=${WP_VOLUME_DIR})
|
|
||||||
# echo -e "HOME : ${HOME}\n"
|
|
||||||
# SITEURL=$(php wp-cli.phar config get WP_SITEURL --path=${WP_VOLUME_DIR})
|
|
||||||
# echo -e "SITEURL : ${SITEURL}\n"
|
|
||||||
LIST=$(php wp-cli.phar config list --path=${WP_VOLUME_DIR} --format="dotenv")
|
|
||||||
echo -e "LIST : ${LIST}\n"
|
|
||||||
#
|
|
||||||
# #DB_HOME=$(php wp-cli.phar db query "SELECT option_value FROM wp_options WHERE option_name = 'home'" --path=${WP_VOLUME_DIR})
|
|
||||||
# #DB_HOME=$(php wp-cli.phar db query 'SELECT * FROM wp_options WHERE option_name LIKE "%home%"' --skip-column-names --path=${WP_VOLUME_DIR})
|
|
||||||
# DB_HOME=$(php wp-cli.phar db query 'SELECT * FROM wp_options WHERE option_name="home"' --skip-column-names --path=${WP_VOLUME_DIR})
|
|
||||||
# echo -e "DB_HOME :\n${DB_HOME}\n"
|
|
||||||
# DB_URL=$(php wp-cli.phar db query 'SELECT * FROM wp_options WHERE option_name="siteurl"' --skip-column-names --path=${WP_VOLUME_DIR})
|
|
||||||
# echo -e "DB_URL :\n${DB_URL}\n"
|
|
||||||
|
|
||||||
|
|
||||||
exec "${PHP_VERSION}" -FR
|
exec "${PHP_VERSION}" -FR
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user