first commit
This commit is contained in:
Executable
+13
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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/
|
||||
Executable
+33
@@ -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
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
log_format vhosts '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
FROM node:12
|
||||
EXPOSE 8080
|
||||
CMD cd /home/app/ && npm install && node index.js
|
||||
@@ -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"
|
||||
@@ -0,0 +1,11 @@
|
||||
version: '3'
|
||||
|
||||
|
||||
networks:
|
||||
default:
|
||||
driver: bridge
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: 10.0.0.0/24
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
nginx:
|
||||
networks:
|
||||
- default
|
||||
- frontnginx_front
|
||||
|
||||
networks:
|
||||
default:
|
||||
driver: bridge
|
||||
frontnginx_front:
|
||||
external: true
|
||||
@@ -0,0 +1,14 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
nginx:
|
||||
networks:
|
||||
- default
|
||||
- frontnginx_front
|
||||
|
||||
networks:
|
||||
default:
|
||||
driver: bridge
|
||||
frontnginx_front:
|
||||
external: true
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user