first commit

This commit is contained in:
Sébastien
2020-10-21 11:48:51 +02:00
commit aa121ca569
12 changed files with 258 additions and 0 deletions
Executable
+13
View File
@@ -0,0 +1,13 @@
.DS_Store
.idea/*
/volume/www/website/.idea/*
*~
/.vscode
/volume/*
/volume/www/**/conf/nginx.conf
/backup
/conf/env/*.env
/conf/parameters.yml
/volume/www/website/.idea
/conf/docker-compose.override.yml
+79
View File
@@ -0,0 +1,79 @@
CLIENT=$(shell cat conf/parameters.yml | grep "client:" | awk '{print $$NF}' | sed 's/;$$//')
SRVNAME=$(shell cat conf/parameters.yml | grep "srvname:" | awk '{print $$NF}' | sed 's/;$$//')
DOCKERCOMPOSE := $(shell command -v docker-compose 2> /dev/null)
USAGE := Usage: make ENV={prod|preprod|dev} {docker-build|docker-start|docker-stop|docker-restart}
ifndef DOCKERCOMPOSE
$(error docker-compose is not available)
endif
ifndef ENV
$(info Environment variable is not set)
$(info $(USAGE))
$(error Exiting)
endif
DC_OVERRIDE := $(shell test -e conf/docker-compose.override.yml && echo "--file conf/docker-compose.override.yml")
DC_OVERRIDE_ENV := $(shell test -e conf/docker-compose.$(ENV).yml && echo "--file conf/docker-compose.$(ENV).yml")
DC=ENV=$(ENV) CLIENT=$(CLIENT) $(DOCKERCOMPOSE) --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
default:
$(info $(USAGE))
$(error Exiting)
docker-build:
$(DC) pull
$(DC) build
$(DC) up -d
docker-start:
$(DC) start
docker-stop:
$(DC) stop
docker-down:
$(DC) down
docker-restart: docker-stop docker-start
docker-rm: docker-stop
$(DC) rm
config:
@echo "Configuring docker for environment '$(ENV)'"
$(eval SERVER_NAME := $(shell cat volume/www/website/conf/nginx-$(ENV).conf | grep server_name | awk '{print $$NF}' | sed 's/;$$//'))
@echo " --> Generating nginx symlink for '$(SERVER_NAME)'"
@docker exec $(CLIENT).nginx.$(ENV) ln -s -f /home/www/website/conf/nginx-$(ENV).conf /home/www/website/conf/nginx.conf
@docker exec $(CLIENT).nginx.$(ENV) ln -s -f /home/www/website/conf/nginx.conf /etc/nginx/sites-enabled/$(SERVER_NAME).conf
@echo " --> Reloading nginx"
@docker exec $(CLIENT).nginx.$(ENV) nginx -t && docker exec $(CLIENT).nginx.$(ENV) nginx -s reload
config-folders:
@echo "---Init folders---"
mkdir -p volume/app
config-default-param:
@echo "---Init default parameters---"
cp conf/parameters.yml.sample conf/parameters.yml
config-master: config-folders config-default-param
pull-website:
git -C volume/www/website pull
config-db-root:
@echo " --> Generating mysql auth file"
@cat conf/env/mysql.env \
| python -c "import sys; import string; v=sys.stdin.readline().split('MYSQL_ROOT_PASSWORD=')[1]; print(string.Template(open('conf/build/mysql/my.cnf').read()).substitute({'PASSWORD':v}))" \
| docker exec -i $(CLIENT).mysql.$(ENV) sh -c 'cat > /root/.my.cnf'
generate-nginx-conf:
@conf/build/nginx/generate-conf.sh $(ENV) $(CLIENT).php.$(ENV)
+15
View File
@@ -0,0 +1,15 @@
FROM nginx
ENV TERM=xterm
RUN apt-get clean \
&& apt-get update \
&& apt-get install -y lsof nano less
RUN rm /etc/nginx/conf.d/default.conf \
&& sed -i 's|include /etc/nginx/conf.d/\*.conf;|include /etc/nginx/conf.d/\*.conf;\ninclude /etc/nginx/sites-enabled/\*.conf;\n|' /etc/nginx/nginx.conf
COPY log_format.conf /etc/nginx/conf.d/
RUN apt-get clean \
&& rm -rf /var/lib/apt/lists/
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
env=$1
srvname=$(cat conf/parameters.yml | grep "srvname:" | awk '{print $NF}' | sed 's/;$//')
upstream=$2
folderpath='volume/www/website/conf/'
confpath=volume/www/website/conf/nginx-$env.conf
OS="unknown"
case "$OSTYPE" in
solaris*) OS="SOLARIS" ;;
darwin*) OS="OSX" ;;
linux*) OS="LINUX" ;;
bsd*) OS="BSD" ;;
msys*) OS="WINDOWS" ;;
*) OS="unknown: $OSTYPE" ;;
esac
echo -e 'Generationg Nginx conf file for \033[0;32m'$srvname'\033[0m ('$env')'
mkdir -p $folderpath
mkdir -p 'volume/www/website/log/'
cp -f conf/build/nginx/nginx.conf $confpath
if [ $OS = "OSX" ]
then
sed -i '.original' "s/{SRVNAME}/$srvname/g" $confpath
rm $confpath.original
sed -i '.original' "s/{UPSTREAM}/$upstream/g" $confpath
rm $confpath.original
else
sed -i "s/{SRVNAME}/$srvname/g" $confpath
sed -i "s/{UPSTREAM}/$upstream/g" $confpath
fi
+2
View File
@@ -0,0 +1,2 @@
log_format vhosts '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
+40
View File
@@ -0,0 +1,40 @@
upstream fastcgi_backend {
server {UPSTREAM}:9000;
}
server {
server_name {SRVNAME};
root /home/www/website/app;
index index.php;
client_max_body_size 200M;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass fastcgi_backend;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
access_log /home/www/website/log/access.log main;
error_log /home/www/website/log/error.log;
}
+3
View File
@@ -0,0 +1,3 @@
FROM node:12
EXPOSE 8080
CMD cd /home/app/ && npm install && node index.js
+15
View File
@@ -0,0 +1,15 @@
version: '3'
services:
nginx:
ports:
- "8080:80"
volumes:
- ../volume/app:/home/app:cached
restart: "no"
node:
volumes:
- ../volume/app:/home/app:cached
restart: "no"
+11
View File
@@ -0,0 +1,11 @@
version: '3'
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.0.0.0/24
+13
View File
@@ -0,0 +1,13 @@
version: '3'
services:
nginx:
networks:
- default
- frontnginx_front
networks:
default:
driver: bridge
frontnginx_front:
external: true
+14
View File
@@ -0,0 +1,14 @@
version: '3'
services:
nginx:
networks:
- default
- frontnginx_front
networks:
default:
driver: bridge
frontnginx_front:
external: true
+20
View File
@@ -0,0 +1,20 @@
version: '3'
services:
nginx:
build: build/nginx
container_name: ${CLIENT}.nginx.${ENV}
hostname: nginx
volumes:
- ../volume/nginx/etc.nginx.sites-enabled:/etc/nginx/sites-enabled
- ../volume/www:/home/www
restart: always
node:
build: build/node
container_name: ${CLIENT}.node.${ENV}
hostname: node
volumes:
- ../volume/app:/home/app
restart: always