├── db ├── mysql │ └── .gitkeep ├── pgsql │ └── .gitkeep ├── redis │ └── .gitkeep └── rabbitmq │ └── .gitkeep ├── scripts └── .gitkeep ├── logs └── .gitkeep ├── www ├── index.php └── test.local │ └── index.php ├── parts ├── env_bash ├── env_head ├── env_nodejs ├── env_redis ├── head.yml ├── env_python ├── env_memcached ├── env_php ├── env_nginx ├── env_mongodb ├── env_posgresql ├── env_mysql ├── env_clickhouse ├── footer.yml ├── env_rabbitmq ├── memcached.yml ├── bash.yml ├── nodejs.yml ├── python.yml ├── mongodb.yml ├── redis.yml ├── posgresql.yml ├── mysql.yml ├── nginx.yml ├── rabbitmq.yml ├── php.yml └── clickhouse.yml ├── bin ├── stop.bat ├── stop ├── logs.bat ├── logs ├── start ├── start.bat ├── exec.bat ├── create_host ├── exec ├── ssl_generate ├── rebuild ├── ssl_generate.bat ├── rebuild.bat ├── build └── app ├── .gitignore ├── image ├── ssl-generate │ ├── www │ │ └── index.html │ ├── config │ │ └── default.conf │ └── docker-compose.yml └── php │ ├── 5.4 │ └── Dockerfile │ ├── 5.6 │ └── Dockerfile │ ├── 7.0 │ └── Dockerfile │ ├── 7.2 │ └── Dockerfile │ ├── 7.3 │ └── Dockerfile │ ├── 7.4 │ └── Dockerfile │ ├── 7.1 │ └── Dockerfile │ ├── 8.0 │ └── Dockerfile │ ├── 8.1 │ └── Dockerfile │ ├── 8.2 │ └── Dockerfile │ ├── 8.3 │ └── Dockerfile │ └── 8.4 │ └── Dockerfile ├── config ├── nginx │ ├── options-ssl-nginx.conf │ ├── template.ssl.conf-example │ ├── sites │ │ ├── test.local.conf │ │ └── test.local.example-by-laravel-or-symfony │ ├── template.conf-example │ └── default.conf └── php │ └── php.ini ├── env-example ├── README.md └── docker-compose-example.yml /db/mysql/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /db/pgsql/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /db/redis/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scripts/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /db/rabbitmq/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /logs/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /www/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Test.local 9 | 10 | -------------------------------------------------------------------------------- /bin/start: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ../ 4 | 5 | if [ ! -f ".env" ]; then 6 | cp env-example .env 7 | fi 8 | 9 | if [ ! -f "docker-compose.yml" ]; then 10 | cp docker-compose-example.yml docker-compose.yml 11 | fi 12 | 13 | docker-compose up -d 14 | cd ./bin 15 | -------------------------------------------------------------------------------- /bin/start.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd .. 3 | 4 | if not exist ".env" ( 5 | copy "env-example" ".env" 6 | ) 7 | 8 | if not exist "docker-compose.yml" ( 9 | copy "docker-compose-example.yml" "docker-compose.yml" 10 | ) 11 | 12 | docker-compose up -d 13 | cd ./bin 14 | pause 15 | -------------------------------------------------------------------------------- /parts/memcached.yml: -------------------------------------------------------------------------------- 1 | #Memcached 2 | memcached: 3 | image: memcached 4 | container_name: "${PREFIX}memcached" 5 | restart: unless-stopped 6 | tty: true 7 | ports: 8 | - "${MEMCACHED_PORT}:11211" 9 | networks: 10 | - openweb-network 11 | 12 | -------------------------------------------------------------------------------- /image/ssl-generate/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | OpenServer - SSL generate 5 | 6 | 7 | 8 | Если ты видишь эту страницу, значит запущен контейнер для генерации SSL сертификата. 9 | 10 | 11 | -------------------------------------------------------------------------------- /parts/bash.yml: -------------------------------------------------------------------------------- 1 | #Bash Service 2 | bash: 3 | image: ubuntu:latest 4 | container_name: "${PREFIX}bash" 5 | restart: unless-stopped 6 | tty: true 7 | ports: 8 | - "${BASH_PORT}:4000" 9 | volumes: 10 | - ./scripts:/bin/app 11 | networks: 12 | - openweb-network 13 | 14 | -------------------------------------------------------------------------------- /parts/nodejs.yml: -------------------------------------------------------------------------------- 1 | #NODE.js 2 | node: 3 | image: "node:${NODE_VERSION}" 4 | container_name: "${PREFIX}node" 5 | restart: unless-stopped 6 | tty: true 7 | working_dir: /var/www 8 | volumes: 9 | - ./www:/var/www 10 | - ./scripts:/bin/app 11 | networks: 12 | - openweb-network 13 | 14 | -------------------------------------------------------------------------------- /parts/python.yml: -------------------------------------------------------------------------------- 1 | #Python 2 | python: 3 | image: "python:${PYTHON_VERSION}" 4 | container_name: "${PREFIX}python" 5 | restart: unless-stopped 6 | tty: true 7 | working_dir: /var/www 8 | volumes: 9 | - ./www:/var/www 10 | - ./scripts:/bin/app 11 | networks: 12 | - openweb-network 13 | 14 | -------------------------------------------------------------------------------- /parts/mongodb.yml: -------------------------------------------------------------------------------- 1 | #MongoDB 2 | mongodb: 3 | image: "mongo:${MONGODB_VERSION}" 4 | container_name: "${PREFIX}mongo" 5 | volumes: 6 | - ./db/mongodb:/data/db 7 | environment: 8 | MONGO_INITDB_ROOT_USERNAME: "${MONGODB_USER}" 9 | MONGO_INITDB_ROOT_PASSWORD: "${MONGODB_PASSWORD}" 10 | networks: 11 | - openweb-network 12 | 13 | -------------------------------------------------------------------------------- /parts/redis.yml: -------------------------------------------------------------------------------- 1 | #Redis Service 2 | redis: 3 | image: redis 4 | container_name: "${PREFIX}redis" 5 | restart: unless-stopped 6 | tty: true 7 | ports: 8 | - "${REDIS_PORT}:6379" 9 | volumes: 10 | - ./db/redis:/var/lib/redis 11 | - ./scripts:/bin/app 12 | environment: 13 | - REDIS_REPLICATION_MODE=master 14 | networks: 15 | - openweb-network 16 | 17 | -------------------------------------------------------------------------------- /parts/posgresql.yml: -------------------------------------------------------------------------------- 1 | #PostgreSQL 2 | pgsql: 3 | image: postgres 4 | container_name: "${PREFIX}pgsql" 5 | ports: 6 | - "${PGSQL_PORT}:5432" 7 | volumes: 8 | - ./db/pgsql:/var/lib/postgresql 9 | - ./scripts:/bin/app 10 | environment: 11 | POSTGRES_USER: "${PGSQL_USER}" 12 | POSTGRES_PASSWORD: "${PGSQL_PASSWORD}" 13 | networks: 14 | - openweb-network 15 | 16 | -------------------------------------------------------------------------------- /config/nginx/options-ssl-nginx.conf: -------------------------------------------------------------------------------- 1 | ssl_session_cache shared:le_nginx_SSL:10m; 2 | ssl_session_timeout 1440m; 3 | ssl_session_tickets off; 4 | 5 | ssl_protocols TLSv1.2 TLSv1.3; 6 | ssl_prefer_server_ciphers off; 7 | 8 | ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; 9 | -------------------------------------------------------------------------------- /image/ssl-generate/config/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name localhost; 4 | 5 | charset utf-8; 6 | access_log /var/log/nginx/host.access.log main; 7 | 8 | root /var/www; 9 | index index.html; 10 | 11 | location / { 12 | try_files $uri $uri/ =404; 13 | } 14 | 15 | error_page 500 502 503 504 /50x.html; 16 | location = /50x.html { 17 | root /usr/share/nginx/html; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /image/ssl-generate/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | webserver: 4 | image: nginx:alpine 5 | container_name: "ssl-generate-webserver" 6 | restart: unless-stopped 7 | tty: true 8 | ports: 9 | - "80:80" 10 | volumes: 11 | - ./www:/var/www 12 | - ./config/:/etc/nginx/conf.d/ 13 | networks: 14 | - openweb-network 15 | 16 | #Docker Networks 17 | networks: 18 | openweb-network: 19 | driver: bridge 20 | #Volumes 21 | volumes: 22 | dbdata: 23 | driver: local 24 | -------------------------------------------------------------------------------- /parts/mysql.yml: -------------------------------------------------------------------------------- 1 | #MySQL Service 2 | mysql: 3 | image: "mysql:${MYSQL_VERSION}" 4 | container_name: "${PREFIX}mysql" 5 | restart: unless-stopped 6 | tty: true 7 | ports: 8 | - "${MYSQL_PORT}:3306" 9 | volumes: 10 | - ./db/mysql:/var/lib/mysql 11 | - ./scripts:/bin/app 12 | environment: 13 | MYSQL_DATABASE: "${MYSQL_DATABASE}" 14 | MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}" 15 | SERVICE_TAGS: dev 16 | SERVICE_NAME: mysql 17 | networks: 18 | - openweb-network 19 | 20 | -------------------------------------------------------------------------------- /parts/nginx.yml: -------------------------------------------------------------------------------- 1 | #Nginx Service 2 | webserver: 3 | image: nginx:alpine 4 | container_name: "${PREFIX}webserver" 5 | restart: unless-stopped 6 | tty: true 7 | ports: 8 | - "${WWW_PORT}:80" 9 | - "${WWW_SECURITY_PORT}:443" 10 | volumes: 11 | - ./www:/var/www 12 | - ./config/nginx/:/etc/nginx/conf.d/ 13 | - ./config/nginx/:/etc/nginx/sites-available/ 14 | - ./config/nginx/:/etc/nginx/sites-enabled/ 15 | - ./scripts:/bin/app 16 | networks: 17 | - openweb-network 18 | 19 | -------------------------------------------------------------------------------- /parts/rabbitmq.yml: -------------------------------------------------------------------------------- 1 | #RabbitMQ 2 | rabbitmq: 3 | image: rabbitmq 4 | container_name: "${PREFIX}rabbitmq" 5 | volumes: 6 | - ./db/rabbitmq:/var/lib/rabbitmq 7 | - ./scripts:/bin/app 8 | environment: 9 | RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE} 10 | RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER} 11 | RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS} 12 | ports: 13 | - "${RABBITMQ_TRAFFIC_PORT}:5672" 14 | - "${RABBITMQ_MANAGER_PORT}:15672" 15 | networks: 16 | - openweb-network 17 | 18 | -------------------------------------------------------------------------------- /parts/php.yml: -------------------------------------------------------------------------------- 1 | #PHP 2 | php: 3 | build: 4 | context: "./image/php/${PHP_VERSION}/." 5 | image: "openweb/php:${PHP_VERSION}" 6 | container_name: "${PREFIX}php" 7 | restart: unless-stopped 8 | tty: true 9 | environment: 10 | SERVICE_NAME: app 11 | SERVICE_TAGS: dev 12 | working_dir: /var/www 13 | volumes: 14 | - ./www:/var/www 15 | - ./config/php/php.ini:/usr/local/etc/php/php.ini 16 | - ./scripts:/bin/app 17 | ports: 18 | - "${XDEBUG_PORT}:9003" 19 | networks: 20 | openweb-network: 21 | aliases: 22 | - php 23 | 24 | -------------------------------------------------------------------------------- /bin/exec.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set CONTAINER= 4 | 5 | if "%~1"=="" ( 6 | cd .. 7 | echo Select number container: 8 | echo 1, 2, 3 ... 9 | 10 | set NUMBER_CONTAINER=1 11 | for /f "skip=2 tokens=1" %%i in ('docker-compose ps') do ( 12 | echo !NUMBER_CONTAINER!) %%i 13 | set CONTAINER_NAME[!NUMBER_CONTAINER!]=%%i 14 | set /a NUMBER_CONTAINER+=1 15 | ) 16 | 17 | set /p SELECT_NUMBER_CONTAINER=Select a container number: 18 | 19 | set CONTAINER=!CONTAINER_NAME[%SELECT_NUMBER_CONTAINER%]! 20 | ) else ( 21 | set CONTAINER=%~1 22 | ) 23 | 24 | docker exec -it %CONTAINER% /bin/bash 25 | -------------------------------------------------------------------------------- /parts/clickhouse.yml: -------------------------------------------------------------------------------- 1 | #Clickhouse 2 | clickhouse-server: 3 | image: yandex/clickhouse-server 4 | container_name: "${PREFIX}clickhouse-server" 5 | restart: unless-stopped 6 | ports: 7 | - "${CLICKHOUSE_DB_PORT}:8123" 8 | - "${CLICKHOUSE_CLIENT_PORT}:9000" 9 | - "${CLICKHOUSE_REPLICATION_PORT}:9009" 10 | volumes: 11 | - ./db/clickhouse:/var/lib/clickhouse 12 | - ./scripts:/bin/app 13 | ulimits: 14 | nproc: 65535 15 | nofile: 16 | soft: 262144 17 | hard: 262144 18 | client: 19 | image: yandex/clickhouse-client 20 | container_name: "${PREFIX}clickhouse-client" 21 | command: ['--host', 'server'] 22 | 23 | -------------------------------------------------------------------------------- /config/nginx/template.ssl.conf-example: -------------------------------------------------------------------------------- 1 | server { 2 | server_name {{host_name}}; 3 | listen 443 ssl; 4 | ssl on; 5 | ssl_certificate /etc/nginx/conf.d/ssl/{{host_name}}/fullchain1.pem; 6 | ssl_certificate_key /etc/nginx/conf.d/ssl/{{host_name}}/privkey1.pem; 7 | 8 | charset utf-8; 9 | access_log /var/log/nginx/{{host_name}}.access.log main; 10 | 11 | root /var/www/{{host_name}}; 12 | index index.php; 13 | 14 | location / { 15 | root /var/www/{{host_name}}; 16 | index index.html index.htm index.php; 17 | } 18 | } 19 | 20 | server { 21 | if ($host = {{host_name}}) { 22 | return 301 https://$host$request_uri; 23 | } 24 | 25 | 26 | server_name {{host_name}}; 27 | return 404; 28 | } 29 | -------------------------------------------------------------------------------- /bin/create_host: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | NGINX_CONFIG=../config/nginx/sites/ 4 | NGINX_HOSTDIR=../www/ 5 | 6 | echo "What domain to create?"; 7 | read NEWHOSTNAME 8 | 9 | if [ -f "$NGINX_CONFIG$NEWHOSTNAME.conf" ] 10 | then 11 | echo "Error: config file already exists $NGINX_CONFIG$NEWHOSTNAME.conf" 12 | exit 13 | fi 14 | 15 | if [ -d "$NGINX_HOSTDIR$NEWHOSTNAME" ] 16 | then 17 | echo "Error: directory already exists $NGINX_HOSTDIR$NEWHOSTNAME" 18 | exit 19 | fi 20 | 21 | mkdir "$NGINX_HOSTDIR$NEWHOSTNAME" 22 | 23 | sed "s/{{host_name}}/$NEWHOSTNAME/g" "$NGINX_CONFIG../template.conf-example" > "$NGINX_CONFIG$NEWHOSTNAME.conf" 24 | 25 | if ! grep -q "127.0.0.1 $NEWHOSTNAME" "/etc/hosts" 26 | then 27 | sudo sh -c "echo \"127.0.0.1 $NEWHOSTNAME\" >> /etc/hosts" 28 | fi 29 | 30 | echo "Complete!" 31 | -------------------------------------------------------------------------------- /config/nginx/sites/test.local.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name test.local; 4 | 5 | charset utf-8; 6 | access_log /var/log/nginx/test.local.access.log main; 7 | 8 | root /var/www/test.local; 9 | index index.php; 10 | 11 | location / { 12 | root /var/www/test.local; 13 | index index.html index.htm index.php; 14 | } 15 | 16 | location ~ \.php$ { 17 | try_files $uri =404; 18 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 19 | fastcgi_pass php:9000; 20 | fastcgi_index index.php; 21 | include fastcgi_params; 22 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 23 | fastcgi_param PATH_INFO $fastcgi_path_info; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /config/nginx/template.conf-example: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name {{host_name}}; 4 | 5 | charset utf-8; 6 | access_log /var/log/nginx/{{host_name}}.access.log main; 7 | 8 | root /var/www/{{host_name}}; 9 | index index.php; 10 | 11 | location / { 12 | root /var/www/{{host_name}}; 13 | index index.html index.htm index.php; 14 | } 15 | 16 | location ~ \.php$ { 17 | try_files $uri =404; 18 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 19 | fastcgi_pass php:9000; 20 | fastcgi_index index.php; 21 | include fastcgi_params; 22 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 23 | fastcgi_param PATH_INFO $fastcgi_path_info; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /bin/exec: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONTAINER='' 4 | 5 | if [ ! $1 ]; then 6 | cd ../ 7 | echo -e "Select number container: \033[1;33m1, 2, 3 ...\033[0m\033[0m" 8 | 9 | NUMBER_CONTAINER=1 10 | for DOCKER_NAME in $(docker-compose ps | tail -n +3 | awk '{ print $1 }') 11 | do 12 | echo -e "\033[1;32m$NUMBER_CONTAINER\033[0m) $DOCKER_NAME" 13 | ((NUMBER_CONTAINER++)) 14 | done 15 | 16 | read SELECT_NUMBER_CONTAINER 17 | NUMBER_CONTAINER=1 18 | for DOCKER_NAME in $(docker-compose ps | tail -n +3 | awk '{ print $1 }') 19 | do 20 | if [ $NUMBER_CONTAINER = $SELECT_NUMBER_CONTAINER ]; then 21 | CONTAINER=$DOCKER_NAME 22 | fi 23 | ((NUMBER_CONTAINER++)) 24 | done 25 | cd ./bin 26 | else 27 | CONTAINER=$1 28 | fi 29 | 30 | docker exec -it $CONTAINER /bin/bash 31 | -------------------------------------------------------------------------------- /config/nginx/sites/test.local.example-by-laravel-or-symfony: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443 ssl; 3 | server_name test.local; 4 | 5 | charset utf-8; 6 | access_log /var/log/nginx/test.local.access.log main; 7 | client_max_body_size 5g; 8 | 9 | 10 | root /var/www/test.local/public; 11 | index index.php; 12 | 13 | location / { 14 | try_files $uri $uri/ /index.php$is_args$args; 15 | } 16 | 17 | location ~ \.php$ { 18 | try_files $uri =404; 19 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 20 | fastcgi_pass php:9000; 21 | fastcgi_index index.php; 22 | include fastcgi_params; 23 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 24 | fastcgi_param PATH_INFO $fastcgi_path_info; 25 | fastcgi_read_timeout 300s; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /env-example: -------------------------------------------------------------------------------- 1 | #DOCKER 2 | PREFIX=ow_ 3 | 4 | #WWW 5 | WWW_PORT=80 6 | WWW_SECURITY_PORT=433 7 | 8 | #MYSQL 9 | MYSQL_PORT=3306 10 | MYSQL_DATABASE=default 11 | MYSQL_PASSWORD=root 12 | MYSQL_VERSION=8.0.13 13 | 14 | #PosgresSQL 15 | PGSQL_PORT=5432 16 | PGSQL_USER=default 17 | PGSQL_PASSWORD=root 18 | 19 | #PHP 20 | PHP_VERSION=8.4 21 | XDEBUG_PORT=9003 22 | 23 | #NODE 24 | NODE_VERSION=16.17.1 25 | 26 | #REDIS 27 | REDIS_PORT=6379 28 | 29 | #RABBITMQ 30 | RABBITMQ_ERLANG_COOKIE=erlang 31 | RABBITMQ_DEFAULT_USER=guest 32 | RABBITMQ_DEFAULT_PASS=guest 33 | RABBITMQ_TRAFFIC_PORT=5672 34 | RABBITMQ_MANAGER_PORT=15672 35 | 36 | #MEMCACHED 37 | MEMCACHED_PORT=11221 38 | 39 | #MongoDB 40 | MONGODB_VERSION=6.0 41 | MONGODB_USER=root 42 | MONGODB_PASSWORD=root 43 | 44 | #CLICKHOUSE 45 | CLICKHOUSE_DB_PORT=8123 46 | CLICKHOUSE_CLIENT_PORT=9000 47 | CLICKHOUSE_REPLICATION_PORT=9009 48 | -------------------------------------------------------------------------------- /config/nginx/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name localhost; 4 | 5 | charset utf-8; 6 | access_log /var/log/nginx/host.access.log main; 7 | 8 | root /var/www; 9 | index index.php; 10 | 11 | location / { 12 | try_files $uri $uri/ /index.php$is_args$args; 13 | } 14 | 15 | error_page 500 502 503 504 /50x.html; 16 | location = /50x.html { 17 | root /usr/share/nginx/html; 18 | } 19 | 20 | location ~ \.php$ { 21 | try_files $uri =404; 22 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 23 | fastcgi_pass php:9000; 24 | fastcgi_index index.php; 25 | include fastcgi_params; 26 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 27 | fastcgi_param PATH_INFO $fastcgi_path_info; 28 | } 29 | } 30 | 31 | include /etc/nginx/conf.d/sites/*.conf; 32 | -------------------------------------------------------------------------------- /bin/ssl_generate: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PREFIX=$(grep PREFIX ../.env | cut -d '=' -f2) 4 | docker stop $PREFIX"webserver" 5 | cd ../image/ssl-generate 6 | docker-compose up -d 7 | cd ../../bin 8 | 9 | 10 | read -p "Input domain: " DOMAIN 11 | 12 | DATE=$(date +"%Y-%m-%d_%H:%M:%S.%s") 13 | SSL_DIR=$(pwd)/../config/nginx/ssl/ 14 | WWW_DIR=$(pwd)/../image/ssl-generate/www/ 15 | NGINX_CONFIG=$(pwd)/../config/nginx/sites/ 16 | LOGS_DIR=$(pwd)/../logs/ 17 | mkdir $SSL_DIR -p 18 | 19 | if [ -d "$SSL_DIR$DOMAIN" ]; then 20 | mv $SSL_DIR$DOMAIN $SSL_DIR$DOMAIN-$DATE 21 | fi 22 | 23 | docker run -it --rm --name certbot \ 24 | -v "$SSL_DIR:/etc/letsencrypt/archive" \ 25 | -v "$WWW_DIR:/var/www" \ 26 | -v "$LOGS_DIR:/var/log" \ 27 | certbot/certbot certonly --webroot -w /var/www -d $DOMAIN \ 28 | --config-dir /etc/letsencrypt \ 29 | --logs-dir /var/log/letsencrypt 30 | 31 | sed "s/{{host_name}}/$DOMAIN/g" "$NGINX_CONFIG../template.ssl.conf-example" > "$NGINX_CONFIG$DOMAIN.ssl.conf" 32 | 33 | cd ../image/ssl-generate 34 | docker-compose down 35 | cd ../../bin 36 | 37 | docker start $PREFIX"webserver" 38 | -------------------------------------------------------------------------------- /bin/rebuild: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ../ 4 | 5 | PREFIX=$(grep PREFIX .env | cut -d '=' -f2) 6 | PHP_VERSION=$(grep PHP_VERSION .env | cut -d '=' -f2) 7 | NODE_VERSION=$(grep NODE_VERSION .env | cut -d '=' -f2) 8 | MONGODB_VERSION=$(grep MONGODB_VERSION .env | cut -d '=' -f2) 9 | 10 | docker stop $PREFIX"webserver" 11 | docker rm $PREFIX"webserver" 12 | 13 | docker stop $PREFIX"php" 14 | docker rm $PREFIX"php" 15 | docker rmi openweb/php:$PHP_VERSION 16 | 17 | docker stop $PREFIX"node" 18 | docker rm $PREFIX"node":$NODE_VERSION 19 | 20 | docker stop $PREFIX"mysql" 21 | docker rm $PREFIX"mysql" 22 | 23 | docker stop $PREFIX"pgsql" 24 | docker rm $PREFIX"pgsql" 25 | 26 | docker stop $PREFIX"redis" 27 | docker rm $PREFIX"redis" 28 | 29 | docker stop $PREFIX"rabbitmq" 30 | docker rm $PREFIX"rabbitmq" 31 | 32 | docker stop $PREFIX"memcached" 33 | docker rm $PREFIX"memcached" 34 | 35 | docker stop $PREFIX"mongo" 36 | docker rm $PREFIX"mongo":$MONGODB_VERSION 37 | 38 | docker stop $PREFIX"clickhouse-server" 39 | docker rm $PREFIX"clickhouse-server" 40 | 41 | docker stop $PREFIX"clickhouse-client" 42 | docker rm $PREFIX"clickhouse-client" 43 | 44 | docker stop $PREFIX"python" 45 | docker rm $PREFIX"python" 46 | 47 | cd ./bin 48 | -------------------------------------------------------------------------------- /bin/ssl_generate.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | for /f "tokens=2 delims==" %%a in ('findstr PREFIX ..\.env') do set PREFIX=%%a 4 | 5 | docker stop %PREFIX%webserver 6 | 7 | cd ..\image\ssl-generate 8 | docker-compose up -d 9 | cd ..\..\bin 10 | 11 | set /p DOMAIN="Input domain: " 12 | 13 | for /f "tokens=1-3 delims= " %%a in ('echo %date% %time%') do set DATE=%%a_%%b.%%c 14 | 15 | set SSL_DIR=%cd%\..\config\nginx\ssl\ 16 | set WWW_DIR=%cd%\..\image\ssl-generate\www\ 17 | set NGINX_CONFIG=%cd%\..\config\nginx\sites\ 18 | set LOGS_DIR=%cd%\..\logs\ 19 | mkdir "%SSL_DIR%" 2>nul 20 | 21 | if exist "%SSL_DIR%%DOMAIN%" ( 22 | move "%SSL_DIR%%DOMAIN%" "%SSL_DIR%%DOMAIN%-%DATE%" 23 | ) 24 | 25 | docker run -it --rm --name certbot ^ 26 | -v "%SSL_DIR%:/etc/letsencrypt/archive" ^ 27 | -v "%WWW_DIR%:/var/www" ^ 28 | -v "%LOGS_DIR%:/var/log" ^ 29 | certbot/certbot certonly --webroot -w /var/www -d %DOMAIN% ^ 30 | --config-dir /etc/letsencrypt ^ 31 | --logs-dir /var/log/letsencrypt 32 | 33 | powershell -Command "(Get-Content '%NGINX_CONFIG%..\\template.ssl.conf-example') -replace '{{host_name}}', '%DOMAIN%' | Set-Content '%NGINX_CONFIG%%DOMAIN%.ssl.conf'" 34 | 35 | cd ..\image\ssl-generate 36 | docker-compose down 37 | cd ..\..\bin 38 | 39 | docker start %PREFIX%webserver 40 | pause 41 | -------------------------------------------------------------------------------- /bin/rebuild.bat: -------------------------------------------------------------------------------- 1 | cd ../ 2 | 3 | Set FILE=.env 4 | 5 | For /F "PREFIX=* delims=" %%i In ("%FILE%") Do Set PREFIX=%%i 6 | For /F "PHP_VERSION=* delims=" %%i In ("%FILE%") Do Set PHP_VERSION=%%i 7 | For /F "NODE_VERSION=* delims=" %%i In ("%FILE%") Do Set NODE_VERSION=%%i 8 | For /F "MONGODB_VERSION=* delims=" %%i In ("%FILE%") Do Set MONGODB_VERSION=%%i 9 | 10 | docker stop %PREFIX%webserver 11 | docker rm %PREFIX%webserver 12 | 13 | docker stop %PREFIX%php 14 | docker rm %PREFIX%php 15 | docker rmi openweb/php:%PHP_VERSION% 16 | 17 | docker stop %PREFIX%node 18 | docker rm %PREFIX%node:%NODE_VERSION% 19 | 20 | docker stop %PREFIX%mysql 21 | docker rm %PREFIX%mysql 22 | 23 | docker stop %PREFIX%pgsql 24 | docker rm %PREFIX%pgsql 25 | 26 | docker stop %PREFIX%redis 27 | docker rm %PREFIX%redis 28 | 29 | docker stop %PREFIX%rabbitmq 30 | docker rm %PREFIX%rabbitmq 31 | 32 | docker stop %PREFIX%memcached 33 | docker rm %PREFIX%memcached 34 | 35 | docker stop %PREFIX%mongo 36 | docker rm %PREFIX%mongo:%MONGODB_VERSION% 37 | 38 | docker stop %PREFIX%clickhouse-server 39 | docker rm %PREFIX%clickhouse-server 40 | 41 | docker stop %PREFIX%clickhouse-client 42 | docker rm %PREFIX%clickhouse-client 43 | 44 | docker stop %PREFIX%python 45 | docker rm %PREFIX%python 46 | 47 | cd ./bin 48 | 49 | pause 50 | -------------------------------------------------------------------------------- /bin/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BUILD_PREFIX='ow_' 4 | ENV_BUILD=false 5 | 6 | if [ -f "../docker-compose.yml" ]; then 7 | echo -e "\033[1;33m!!!WARNING!!!\033[0m if you continue further, the old config docker will be deleted [Y/\033[1;33mN\033[0m]"; 8 | read CONTINUE 9 | if [[ $CONTINUE =~ ^([nN][oO]|[nN])$ ]]; then 10 | echo "Bye, bye!" 11 | exit 12 | fi 13 | fi 14 | 15 | rm ../docker-compose.yml 16 | cat ../parts/head.yml >> ../docker-compose.yml 17 | 18 | if [ -f "../.env" ]; then 19 | echo -e "Delete env file? [Y/\033[1;33mN\033[0m]"; 20 | read CONTINUE 21 | if [[ $CONTINUE =~ ^([yY][eE][sS]|[yY])$ ]]; then 22 | rm ../.env 23 | cat ../parts/env_head >> ../.env 24 | 25 | echo -e "Input prefix for conteiners? Example: \033[1;33mow_\033[0m"; 26 | read INPUT_PREFIX 27 | 28 | if [[ $INPUT_PREFIX =~ (.+) ]]; then 29 | BUILD_PREFIX=$INPUT_PREFIX 30 | fi 31 | 32 | sed -i s/{PREFIX}/$BUILD_PREFIX/ ../.env 33 | ENV_BUILD=true 34 | fi 35 | fi 36 | 37 | PARTS=(nginx php nodejs mysql posgresql rabbitmq redis memcached mongodb clickhouse python bash) 38 | 39 | for item in ${PARTS[*]} 40 | do 41 | echo -e "Do you want install \033[1;32m$item\033[0m? [\033[1;33mY\033[0m/N]"; 42 | read ANSWER 43 | 44 | if [[ $ANSWER =~ ^([yY][eE][sS]|[yY])$ ]]; then 45 | cat ../parts/$item.yml >> ../docker-compose.yml 46 | 47 | if [ $ENV_BUILD = "true" ]; then 48 | cat ../parts/env_$item >> ../.env 49 | fi 50 | fi 51 | done 52 | 53 | cat ../parts/footer.yml >> ../docker-compose.yml 54 | -------------------------------------------------------------------------------- /image/php/5.4/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:5.4-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN docker-php-ext-install pcntl 26 | RUN docker-php-ext-install gd 27 | RUN docker-php-ext-install sockets 28 | RUN docker-php-ext-install zip 29 | 30 | # Xdebug 31 | RUN pecl install xdebug-2.2.1 && docker-php-ext-enable xdebug 32 | 33 | # Redis 34 | RUN pecl install redis-2.2.7 && docker-php-ext-enable redis 35 | 36 | # Memcached 37 | RUN pecl bundle memcached-2.2.0 && cd memcached && phpize && ./configure && make && make install && docker-php-ext-enable memcached 38 | 39 | # MySQL 40 | RUN docker-php-ext-install mysqli 41 | RUN docker-php-ext-install pdo_mysql 42 | 43 | # PostgreSQL 44 | RUN docker-php-ext-install pgsql 45 | RUN docker-php-ext-install pdo_pgsql 46 | 47 | # RabbitMQ 48 | RUN pecl install amqp-1.4.0 && docker-php-ext-enable amqp 49 | 50 | # Composer 51 | RUN curl -sS https://getcomposer.org/installer | php -- \ 52 | --filename=composer \ 53 | --install-dir=/usr/local/bin && \ 54 | echo "alias composer='composer'" >> /root/.bashrc 55 | 56 | CMD ["php-fpm", "-F"] 57 | 58 | WORKDIR /var/www 59 | 60 | EXPOSE 9000 61 | -------------------------------------------------------------------------------- /image/php/5.6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:5.6-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN docker-php-ext-install pcntl 26 | RUN docker-php-ext-install gd 27 | RUN docker-php-ext-install sockets 28 | RUN docker-php-ext-install zip 29 | 30 | # Xdebug 31 | RUN pecl install xdebug-2.5.5 && docker-php-ext-enable xdebug 32 | 33 | # Redis 34 | RUN pecl install redis-2.2.7 && docker-php-ext-enable redis 35 | 36 | # Memcached 37 | RUN pecl bundle memcached-2.2.0 && cd memcached && phpize && ./configure && make && make install && docker-php-ext-enable memcached 38 | 39 | # MySQL 40 | RUN docker-php-ext-install mysqli 41 | RUN docker-php-ext-install pdo_mysql 42 | 43 | # PostgreSQL 44 | RUN docker-php-ext-install pgsql 45 | RUN docker-php-ext-install pdo_pgsql 46 | 47 | # RabbitMQ 48 | RUN pecl install amqp-1.10.2 && docker-php-ext-enable amqp 49 | 50 | # Composer 51 | RUN curl -sS https://getcomposer.org/installer | php -- \ 52 | --filename=composer \ 53 | --install-dir=/usr/local/bin && \ 54 | echo "alias composer='composer'" >> /root/.bashrc 55 | 56 | CMD ["php-fpm", "-F"] 57 | 58 | WORKDIR /var/www 59 | 60 | EXPOSE 9000 61 | -------------------------------------------------------------------------------- /image/php/7.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.0-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN pecl install decimal-1.3.0 && docker-php-ext-enable decimal 26 | RUN docker-php-ext-install pcntl 27 | RUN docker-php-ext-install gd 28 | RUN docker-php-ext-install sockets 29 | RUN docker-php-ext-install zip 30 | RUN pecl install igbinary && docker-php-ext-enable igbinary 31 | 32 | # Xdebug 33 | RUN pecl install xdebug-2.6.1 && docker-php-ext-enable xdebug 34 | 35 | # Redis 36 | RUN pecl install redis-5.3.1 && docker-php-ext-enable redis 37 | 38 | # Memcached 39 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 40 | RUN pecl install memcache-4.0.5.2 && docker-php-ext-enable memcache 41 | 42 | # MySQL 43 | RUN docker-php-ext-install mysqli 44 | RUN docker-php-ext-install pdo_mysql 45 | 46 | # PostgreSQL 47 | RUN docker-php-ext-install pgsql 48 | RUN docker-php-ext-install pdo_pgsql 49 | 50 | # RabbitMQ 51 | RUN pecl install amqp-1.10.2 && docker-php-ext-enable amqp 52 | 53 | # Composer 54 | RUN curl -sS https://getcomposer.org/installer | php -- \ 55 | --filename=composer \ 56 | --install-dir=/usr/local/bin && \ 57 | echo "alias composer='composer'" >> /root/.bashrc 58 | 59 | CMD ["php-fpm", "-F"] 60 | 61 | WORKDIR /var/www 62 | 63 | EXPOSE 9000 64 | -------------------------------------------------------------------------------- /image/php/7.2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.2-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN pecl install decimal-1.3.0 && docker-php-ext-enable decimal 26 | RUN docker-php-ext-install pcntl 27 | RUN docker-php-ext-install gd 28 | RUN docker-php-ext-install sockets 29 | RUN docker-php-ext-install zip 30 | RUN pecl install igbinary && docker-php-ext-enable igbinary 31 | 32 | # Xdebug 33 | RUN pecl install xdebug-2.9.7 && docker-php-ext-enable xdebug 34 | 35 | # Redis 36 | RUN pecl install redis-5.3.1 && docker-php-ext-enable redis 37 | 38 | # Memcached 39 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 40 | RUN pecl install memcache-4.0.5.2 && docker-php-ext-enable memcache 41 | 42 | # MySQL 43 | RUN docker-php-ext-install mysqli 44 | RUN docker-php-ext-install pdo_mysql 45 | 46 | # PostgreSQL 47 | RUN docker-php-ext-install pgsql 48 | RUN docker-php-ext-install pdo_pgsql 49 | 50 | # RabbitMQ 51 | RUN pecl install amqp-1.10.2 && docker-php-ext-enable amqp 52 | 53 | # Composer 54 | RUN curl -sS https://getcomposer.org/installer | php -- \ 55 | --filename=composer \ 56 | --install-dir=/usr/local/bin && \ 57 | echo "alias composer='composer'" >> /root/.bashrc 58 | 59 | CMD ["php-fpm", "-F"] 60 | 61 | WORKDIR /var/www 62 | 63 | EXPOSE 9000 64 | -------------------------------------------------------------------------------- /image/php/7.3/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.3-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN pecl install decimal-1.3.0 && docker-php-ext-enable decimal 26 | RUN docker-php-ext-install pcntl 27 | RUN docker-php-ext-install gd 28 | RUN docker-php-ext-install sockets 29 | RUN docker-php-ext-install zip 30 | RUN pecl install igbinary && docker-php-ext-enable igbinary 31 | 32 | # Xdebug 33 | RUN pecl install xdebug-2.9.7 && docker-php-ext-enable xdebug 34 | 35 | # Redis 36 | RUN pecl install redis-5.3.1 && docker-php-ext-enable redis 37 | 38 | # Memcached 39 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 40 | RUN pecl install memcache-4.0.5.2 && docker-php-ext-enable memcache 41 | 42 | # MySQL 43 | RUN docker-php-ext-install mysqli 44 | RUN docker-php-ext-install pdo_mysql 45 | 46 | # PostgreSQL 47 | RUN docker-php-ext-install pgsql 48 | RUN docker-php-ext-install pdo_pgsql 49 | 50 | # RabbitMQ 51 | RUN pecl install amqp-1.10.2 && docker-php-ext-enable amqp 52 | 53 | # Composer 54 | RUN curl -sS https://getcomposer.org/installer | php -- \ 55 | --filename=composer \ 56 | --install-dir=/usr/local/bin && \ 57 | echo "alias composer='composer'" >> /root/.bashrc 58 | 59 | CMD ["php-fpm", "-F"] 60 | 61 | WORKDIR /var/www 62 | 63 | EXPOSE 9000 64 | -------------------------------------------------------------------------------- /image/php/7.4/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.4-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN pecl install decimal-1.3.0 && docker-php-ext-enable decimal 26 | RUN docker-php-ext-install pcntl 27 | RUN docker-php-ext-install gd 28 | RUN docker-php-ext-install sockets 29 | RUN docker-php-ext-install zip 30 | RUN pecl install igbinary && docker-php-ext-enable igbinary 31 | 32 | # Xdebug 33 | RUN pecl install xdebug-2.9.7 && docker-php-ext-enable xdebug 34 | 35 | # Redis 36 | RUN pecl install redis-5.3.1 && docker-php-ext-enable redis 37 | 38 | # Memcached 39 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 40 | RUN pecl install memcache-4.0.5.2 && docker-php-ext-enable memcache 41 | 42 | # MySQL 43 | RUN docker-php-ext-install mysqli 44 | RUN docker-php-ext-install pdo_mysql 45 | 46 | # PostgreSQL 47 | RUN docker-php-ext-install pgsql 48 | RUN docker-php-ext-install pdo_pgsql 49 | 50 | # RabbitMQ 51 | RUN pecl install amqp-1.10.2 && docker-php-ext-enable amqp 52 | 53 | # Composer 54 | RUN curl -sS https://getcomposer.org/installer | php -- \ 55 | --filename=composer \ 56 | --install-dir=/usr/local/bin && \ 57 | echo "alias composer='composer'" >> /root/.bashrc 58 | 59 | CMD ["php-fpm", "-F"] 60 | 61 | WORKDIR /var/www 62 | 63 | EXPOSE 9000 64 | -------------------------------------------------------------------------------- /image/php/7.1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.1-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN pecl install decimal-1.3.0 && docker-php-ext-enable decimal 26 | RUN docker-php-ext-install pcntl 27 | RUN docker-php-ext-install gd 28 | RUN docker-php-ext-install sockets 29 | RUN docker-php-ext-install zip 30 | RUN pecl install igbinary && docker-php-ext-enable igbinary 31 | 32 | # Xdebug 33 | RUN pecl install xdebug-2.9.7 && docker-php-ext-enable xdebug 34 | 35 | # Redis 36 | RUN pecl install redis-5.3.1 && docker-php-ext-enable redis 37 | 38 | # Memcached 39 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 40 | RUN pecl install memcache-4.0.5.2 && docker-php-ext-enable memcache 41 | 42 | # MySQL 43 | RUN docker-php-ext-install mysqli 44 | RUN docker-php-ext-install pdo_mysql 45 | 46 | # PostgreSQL 47 | RUN docker-php-ext-install pgsql 48 | RUN docker-php-ext-install pdo_pgsql 49 | 50 | # RabbitMQ 51 | RUN pecl install amqp-1.10.2 && docker-php-ext-enable amqp 52 | 53 | 54 | # Composer 55 | RUN curl -sS https://getcomposer.org/installer | php -- \ 56 | --filename=composer \ 57 | --install-dir=/usr/local/bin && \ 58 | echo "alias composer='composer'" >> /root/.bashrc 59 | 60 | CMD ["php-fpm", "-F"] 61 | 62 | WORKDIR /var/www 63 | 64 | EXPOSE 9000 65 | -------------------------------------------------------------------------------- /image/php/8.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.0-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN docker-php-ext-install pcntl 26 | RUN docker-php-ext-install gd 27 | RUN docker-php-ext-install sockets 28 | RUN docker-php-ext-install zip 29 | RUN pecl install igbinary && docker-php-ext-enable igbinary 30 | 31 | # decimal 32 | RUN docker-php-source extract \ 33 | && git clone --branch 1.x-php8 --depth 1 https://github.com/reptily/ext-decimal.git /usr/src/php/ext/decimal \ 34 | && cd /usr/src/php/ext/decimal && git submodule update --init \ 35 | && docker-php-ext-install decimal 36 | 37 | # Xdebug 38 | RUN pecl install xdebug-3.0.0 && docker-php-ext-enable xdebug 39 | 40 | # Redis 41 | RUN pecl install redis-5.3.2 && docker-php-ext-enable redis 42 | 43 | # Memcached 44 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 45 | RUN pecl install memcache-8.0 && docker-php-ext-enable memcache 46 | 47 | # MySQL 48 | RUN docker-php-ext-install mysqli 49 | RUN docker-php-ext-install pdo_mysql 50 | 51 | # PostgreSQL 52 | RUN docker-php-ext-install pgsql 53 | RUN docker-php-ext-install pdo_pgsql 54 | 55 | # RabbitMQ 56 | RUN docker-php-source extract \ 57 | && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ 58 | && cd /usr/src/php/ext/amqp && git submodule update --init \ 59 | && docker-php-ext-install amqp 60 | 61 | # Composer 62 | RUN curl -sS https://getcomposer.org/installer | php -- \ 63 | --filename=composer \ 64 | --install-dir=/usr/local/bin && \ 65 | echo "alias composer='composer'" >> /root/.bashrc 66 | 67 | CMD ["php-fpm", "-F"] 68 | 69 | WORKDIR /var/www 70 | 71 | EXPOSE 9000 72 | -------------------------------------------------------------------------------- /image/php/8.1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.1-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN docker-php-ext-install pcntl 26 | RUN docker-php-ext-install gd 27 | RUN docker-php-ext-install sockets 28 | RUN docker-php-ext-install zip 29 | RUN pecl install igbinary && docker-php-ext-enable igbinary 30 | 31 | # decimal 32 | RUN docker-php-source extract \ 33 | && git clone --branch 1.x-php8 --depth 1 https://github.com/reptily/ext-decimal.git /usr/src/php/ext/decimal \ 34 | && cd /usr/src/php/ext/decimal && git submodule update --init \ 35 | && docker-php-ext-install decimal 36 | 37 | # Xdebug 38 | RUN pecl install xdebug-3.1.2 && docker-php-ext-enable xdebug 39 | 40 | # Redis 41 | RUN pecl install redis-5.3.4 && docker-php-ext-enable redis 42 | 43 | # Memcached 44 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 45 | RUN pecl install memcache-8.0 && docker-php-ext-enable memcache 46 | 47 | # MySQL 48 | RUN docker-php-ext-install mysqli 49 | RUN docker-php-ext-install pdo_mysql 50 | 51 | # PostgreSQL 52 | RUN docker-php-ext-install pgsql 53 | RUN docker-php-ext-install pdo_pgsql 54 | 55 | # RabbitMQ 56 | RUN docker-php-source extract \ 57 | && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ 58 | && cd /usr/src/php/ext/amqp && git submodule update --init \ 59 | && docker-php-ext-install amqp 60 | 61 | # Composer 62 | RUN curl -sS https://getcomposer.org/installer | php -- \ 63 | --filename=composer \ 64 | --install-dir=/usr/local/bin && \ 65 | echo "alias composer='composer'" >> /root/.bashrc 66 | 67 | CMD ["php-fpm", "-F"] 68 | 69 | WORKDIR /var/www 70 | 71 | EXPOSE 9000 72 | -------------------------------------------------------------------------------- /image/php/8.2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.2-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN docker-php-ext-install pcntl 26 | RUN docker-php-ext-install gd 27 | RUN docker-php-ext-install sockets 28 | RUN docker-php-ext-install zip 29 | RUN pecl install igbinary && docker-php-ext-enable igbinary 30 | 31 | # decimal 32 | RUN docker-php-source extract \ 33 | && git clone --branch 1.x-php8 --depth 1 https://github.com/reptily/ext-decimal.git /usr/src/php/ext/decimal \ 34 | && cd /usr/src/php/ext/decimal && git submodule update --init \ 35 | && docker-php-ext-install decimal 36 | 37 | # Xdebug 38 | RUN pecl install xdebug-3.2.0 && docker-php-ext-enable xdebug 39 | 40 | # Redis 41 | RUN pecl install redis-5.3.4 && docker-php-ext-enable redis 42 | 43 | # Memcached 44 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 45 | RUN pecl install memcache-8.0 && docker-php-ext-enable memcache 46 | 47 | # MySQL 48 | RUN docker-php-ext-install mysqli 49 | RUN docker-php-ext-install pdo_mysql 50 | 51 | # PostgreSQL 52 | RUN docker-php-ext-install pgsql 53 | RUN docker-php-ext-install pdo_pgsql 54 | 55 | # RabbitMQ 56 | RUN docker-php-source extract \ 57 | && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ 58 | && cd /usr/src/php/ext/amqp && git submodule update --init \ 59 | && docker-php-ext-install amqp 60 | 61 | # Composer 62 | RUN curl -sS https://getcomposer.org/installer | php -- \ 63 | --filename=composer \ 64 | --install-dir=/usr/local/bin && \ 65 | echo "alias composer='composer'" >> /root/.bashrc 66 | 67 | CMD ["php-fpm", "-F"] 68 | 69 | WORKDIR /var/www 70 | 71 | EXPOSE 9000 72 | -------------------------------------------------------------------------------- /image/php/8.3/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.3-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN docker-php-ext-install pcntl 26 | RUN docker-php-ext-install gd 27 | RUN docker-php-ext-install sockets 28 | RUN docker-php-ext-install zip 29 | RUN pecl install igbinary && docker-php-ext-enable igbinary 30 | 31 | # decimal 32 | RUN docker-php-source extract \ 33 | && git clone --branch 1.x-php8 --depth 1 https://github.com/reptily/ext-decimal.git /usr/src/php/ext/decimal \ 34 | && cd /usr/src/php/ext/decimal && git submodule update --init \ 35 | && docker-php-ext-install decimal 36 | 37 | # Xdebug 38 | RUN pecl install xdebug-3.3.0 && docker-php-ext-enable xdebug 39 | 40 | # Redis 41 | RUN pecl install redis-5.3.4 && docker-php-ext-enable redis 42 | 43 | # Memcached 44 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 45 | RUN pecl install memcache-8.0 && docker-php-ext-enable memcache 46 | 47 | # MySQL 48 | RUN docker-php-ext-install mysqli 49 | RUN docker-php-ext-install pdo_mysql 50 | 51 | # PostgreSQL 52 | RUN docker-php-ext-install pgsql 53 | RUN docker-php-ext-install pdo_pgsql 54 | 55 | # RabbitMQ 56 | RUN docker-php-source extract \ 57 | && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ 58 | && cd /usr/src/php/ext/amqp && git submodule update --init \ 59 | && docker-php-ext-install amqp 60 | 61 | # Composer 62 | RUN curl -sS https://getcomposer.org/installer | php -- \ 63 | --filename=composer \ 64 | --install-dir=/usr/local/bin && \ 65 | echo "alias composer='composer'" >> /root/.bashrc 66 | 67 | CMD ["php-fpm", "-F"] 68 | 69 | WORKDIR /var/www 70 | 71 | EXPOSE 9000 72 | -------------------------------------------------------------------------------- /image/php/8.4/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.4-fpm 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | git \ 5 | curl \ 6 | libz-dev \ 7 | libmemcached-dev \ 8 | libcurl4-openssl-dev \ 9 | libxml2-dev \ 10 | libssl-dev \ 11 | libpng-dev \ 12 | libonig-dev \ 13 | libpq-dev \ 14 | librabbitmq-dev \ 15 | libzip-dev \ 16 | libevent-dev \ 17 | build-essential 18 | 19 | RUN curl -O https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz 20 | RUN tar -zxvf mpdecimal-2.5.1.tar.gz 21 | RUN cd mpdecimal-2.5.1 && ./configure && make && make install 22 | 23 | # PHP extension 24 | RUN docker-php-ext-install calendar 25 | RUN docker-php-ext-install pcntl 26 | RUN docker-php-ext-install gd 27 | RUN docker-php-ext-install sockets 28 | RUN docker-php-ext-install zip 29 | RUN pecl install igbinary && docker-php-ext-enable igbinary 30 | 31 | # decimal 32 | RUN docker-php-source extract \ 33 | && git clone --branch 1.x-php8 --depth 1 https://github.com/reptily/ext-decimal.git /usr/src/php/ext/decimal \ 34 | && cd /usr/src/php/ext/decimal && git submodule update --init \ 35 | && docker-php-ext-install decimal 36 | 37 | # Xdebug 38 | RUN pecl install xdebug-3.4.1 && docker-php-ext-enable xdebug 39 | 40 | # Redis 41 | RUN pecl install redis-6.1.0 && docker-php-ext-enable redis 42 | 43 | # Memcached 44 | RUN pecl bundle memcached-3.1.5 && cd memcached && phpize && ./configure --enable-memcached-igbinary && make && make install && docker-php-ext-enable memcached 45 | RUN pecl install memcache-8.0 && docker-php-ext-enable memcache 46 | 47 | # MySQL 48 | RUN docker-php-ext-install mysqli 49 | RUN docker-php-ext-install pdo_mysql 50 | 51 | # PostgreSQL 52 | RUN docker-php-ext-install pgsql 53 | RUN docker-php-ext-install pdo_pgsql 54 | 55 | # RabbitMQ 56 | RUN docker-php-source extract \ 57 | && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ 58 | && cd /usr/src/php/ext/amqp && git submodule update --init \ 59 | && docker-php-ext-install amqp 60 | 61 | # Composer 62 | RUN curl -sS https://getcomposer.org/installer | php -- \ 63 | --filename=composer \ 64 | --install-dir=/usr/local/bin && \ 65 | echo "alias composer='composer'" >> /root/.bashrc 66 | 67 | CMD ["php-fpm", "-F"] 68 | 69 | WORKDIR /var/www 70 | 71 | EXPOSE 9000 72 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # Поддержка 6 | PHP версии: 8.4, 8.3, 8.2, 8.1, 8.0, 7.4, 7.3, 7.2, 7.1, 7.0, 5.6, 5.4 7 | 8 | # Установка 9 | * Клонируем или скачиваем последний релиз 10 | * Копируем файл *env-example* в *.env*, при необходимости меняем настройки 11 | 12 | ## Linux 13 | 14 | Все действия выполняются в директории *bin* 15 | 16 | Чтобы запустить графический помощник (требуется установленный пакет dialog) 17 | ```bash 18 | ./app 19 | ``` 20 |

21 | 22 |

23 | 24 | Собрать выборочную сборку 25 | ```bash 26 | ./build 27 | ``` 28 | 29 | Запуск 30 | ```bash 31 | ./start 32 | ``` 33 | 34 | Остановка 35 | ```bash 36 | ./stop 37 | ``` 38 | 39 | Зайти в контейнер (аргумент имя контейнера) 40 | ```bash 41 | ./exec app 42 | ``` 43 | Если запустить без аргумента, открывается список доступных контейнеров, и по выброному номеру можно будет ощуществить вход. 44 | ```bash 45 | ./exec 46 | ``` 47 | ```bash 48 | Select number container: 1, 2, 3 ... 49 | 1) ow_php 50 | 2) ow_mysql 51 | ``` 52 | 53 | 54 | Пересобрать контейнеры 55 | ```bash 56 | ./rebuild 57 | ``` 58 | 59 | Создать новый локальный хост 60 | ```bash 61 | ./create_host 62 | ``` 63 | 64 | ## Windows 65 | 66 | Все действия выполняются в директории *bin*\ 67 | 68 | Запуск 69 | * start.bat 70 | 71 | Остановка 72 | * stop.bat 73 | 74 | Зайти в контейнер 75 | * exec.bat 76 | 77 | Пересобрать контейнеры 78 | * rebuild.bat 79 | 80 | # XDebugger 81 | IDE key: openweb 82 | 83 | # Импорт дополнительных скриптов в контейнеры 84 | Все файлы которые будут располагаться в директории *scripts* попадут в контейнер директорию */bin/app* 85 | 86 | ## Системные требования 87 | Свободного места - 2 GB\ 88 | Docker\ 89 | Docker compose 90 | 91 | ## Создание виртуального хоста 92 | Все действия выполняются в директории *bin* 93 | 94 | Запуск для Linux 95 | ```bash 96 | ./create_host 97 | ``` 98 | Далее вводим имя хоста, зачем перезапускаем докер или отдельно контейнер с nginx 99 | 100 | ### Полезные ссылки 101 | Скачать Docker (windows) 102 | 103 | Поддержка проекта 104 | 105 | ### Программное обеспечение 106 | PHP\ 107 | Python\ 108 | NODE.js\ 109 | MySQL\ 110 | PosgresSQL\ 111 | Memcached\ 112 | Redis\ 113 | Xdebug\ 114 | MongoDB \ 115 | ClickHouse 116 | -------------------------------------------------------------------------------- /config/php/php.ini: -------------------------------------------------------------------------------- 1 | [PHP] 2 | engine = On 3 | short_open_tag = On 4 | precision = 14 5 | output_buffering = Off 6 | zlib.output_compression = Off 7 | implicit_flush = Off 8 | unserialize_callback_func = 9 | serialize_precision = 100 10 | disable_functions = dl 11 | disable_classes = 12 | zend.enable_gc = On 13 | expose_php = Off 14 | max_execution_time = 30 15 | max_input_time = 60 16 | memory_limit = 256M 17 | error_reporting = E_ALL & ~E_NOTICE 18 | display_errors = On 19 | display_startup_errors = Off 20 | log_errors = On 21 | log_errors_max_len = 1024 22 | ignore_repeated_errors = Off 23 | ignore_repeated_source = Off 24 | report_memleaks = On 25 | track_errors = Off 26 | html_errors = On 27 | error_log = /var/log/php_errors 28 | variables_order = "EGPCS" 29 | request_order = "GP" 30 | register_argc_argv = On 31 | auto_globals_jit = On 32 | post_max_size = 64M 33 | auto_prepend_file = 34 | auto_append_file = 35 | default_mimetype = "text/html" 36 | default_charset = "UTF-8" 37 | include_path = ".:/opt/php72/lib/php" 38 | doc_root = 39 | user_dir = 40 | enable_dl = Off 41 | file_uploads = On 42 | upload_max_filesize = 64M 43 | max_file_uploads = 20 44 | allow_url_fopen = On 45 | allow_url_include = On 46 | default_socket_timeout 47 | cli_server.color 48 | date.timezone = Asia/Riyadh 49 | pdo_mysql.cache_size = 2000 50 | pdo_mysql.default_soc 51 | sendmail_path = /usr/sbin/sendmail -t 52 | mail.add_x_header 53 | sql.safe_mode = 54 | odbc.allow_persistent = Off 55 | odbc.check_persistent = Off 56 | odbc.max_persistent = -1 57 | odbc.max_links = -1 58 | odbc.defaultlrl = 4096 59 | odbc.defaultbinmode 60 | ibase.allow_persistent = 1 61 | ibase.max_persistent = -1 62 | ibase.max_links = -1 63 | ibase.timestampformat = "%Y-%m-%d %H:%M:%S" 64 | ibase.dateformat = "%Y-%m-%d" 65 | ibase.timeformat = "%H:%M" 66 | mysqli.max_persistent = -1 67 | mysqli.allow_persistent = Off 68 | mysqli.max_links = -1 69 | mysqli.cache_size = 2000 70 | mysqli.default_port = 3306 71 | mysqli.default_socket = 72 | mysqli.default_host = 73 | mysqli.default_user = 74 | mysqli.default_pw = 75 | mysqli.reconnect = 76 | mysqlnd.collect_statistics = Off 77 | mysqlnd.collect_memory_statistics = 78 | pgsql.allow_persistent = Off 79 | pgsql.auto_reset_persistent = Off 80 | pgsql.max_persistent = -1 81 | pgsql.max_links = -1 82 | pgsql.ignore_notice = 0 83 | pgsql.log_notice 84 | bcmath.scale 85 | session.save_handler = files 86 | session.save_path = "/tmp" 87 | session.use_strict_mode = 0 88 | session.use_cookies = 1 89 | session.use_only_cookies = 1 90 | session.name = PHPSESSID 91 | session.auto_start = 0 92 | session.cookie_lifetime = 0 93 | session.cookie_path = / 94 | session.cookie_domain = 95 | session.cookie_httponly = 96 | session.serialize_handler = php 97 | session.gc_probability = 1 98 | session.gc_divisor = 100 99 | session.gc_maxlifetime = 1440 100 | session.referer_check = 101 | session.cache_limiter = nocache 102 | session.cache_expire = 180 103 | session.use_trans_sid = 0 104 | session.hash_function = 0 105 | session.hash_bits_per_character = 5 106 | url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fields" 107 | zend.assertions 108 | tidy.clean_output = 109 | soap.wsdl_cache_enabled=1 110 | soap.wsdl_cache_dir="/tmp" 111 | soap.wsdl_cache_ttl=86400 112 | soap.wsdl_cache_limit 113 | ldap.max_links 114 | xdebug.mode=debug 115 | xdebug.start_with_request=yes 116 | xdebug.remote_enable=on 117 | xdebug.remote_autostart=on 118 | xdebug.remote_mode=req 119 | xdebug.remote_port=9003 120 | xdebug.client_port=9003 121 | xdebug.remote_handler=dbgp 122 | xdebug.remote_connect_back=0 123 | xdebug.idekey=openweb 124 | xdebug.remote_host=php 125 | xdebug.client_host=host.docker.internal 126 | xdebug.discover_client_host = 1 127 | -------------------------------------------------------------------------------- /docker-compose-example.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | 4 | #Nginx Service 5 | webserver: 6 | image: nginx:alpine 7 | container_name: "${PREFIX}webserver" 8 | restart: unless-stopped 9 | tty: true 10 | ports: 11 | - "${WWW_PORT}:80" 12 | - "${WWW_SECURITY_PORT}:443" 13 | volumes: 14 | - ./www:/var/www 15 | - ./config/nginx/:/etc/nginx/conf.d/ 16 | - ./scripts:/bin/app 17 | networks: 18 | - openweb-network 19 | 20 | #PHP 21 | php: 22 | build: 23 | context: "./image/php/${PHP_VERSION}/." 24 | image: "openweb/php:${PHP_VERSION}" 25 | container_name: "${PREFIX}php" 26 | restart: unless-stopped 27 | tty: true 28 | environment: 29 | SERVICE_NAME: app 30 | SERVICE_TAGS: dev 31 | working_dir: /var/www 32 | volumes: 33 | - ./www:/var/www 34 | - ./config/php/php.ini:/usr/local/etc/php/php.ini 35 | - ./scripts:/bin/app 36 | ports: 37 | - "${XDEBUG_PORT}:9003" 38 | networks: 39 | openweb-network: 40 | aliases: 41 | - php 42 | 43 | #NODE.js 44 | node: 45 | image: "node:${NODE_VERSION}" 46 | container_name: "${PREFIX}node" 47 | restart: unless-stopped 48 | tty: true 49 | working_dir: /var/www 50 | volumes: 51 | - ./www:/var/www 52 | - ./scripts:/bin/app 53 | networks: 54 | - openweb-network 55 | 56 | #MySQL Service 57 | mysql: 58 | image: "mysql:${MYSQL_VERSION}" 59 | container_name: "${PREFIX}mysql" 60 | restart: unless-stopped 61 | tty: true 62 | ports: 63 | - "${MYSQL_PORT}:3306" 64 | volumes: 65 | - ./db/mysql:/var/lib/mysql 66 | - ./scripts:/bin/app 67 | environment: 68 | MYSQL_DATABASE: "${MYSQL_DATABASE}" 69 | MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}" 70 | SERVICE_TAGS: dev 71 | SERVICE_NAME: mysql 72 | networks: 73 | - openweb-network 74 | 75 | #PostgreSQL 76 | pgsql: 77 | image: postgres 78 | container_name: "${PREFIX}pgsql" 79 | ports: 80 | - "${PGSQL_PORT}:5432" 81 | volumes: 82 | - ./db/pgsql:/var/lib/postgresql 83 | - ./scripts:/bin/app 84 | environment: 85 | POSTGRES_USER: "${PGSQL_USER}" 86 | POSTGRES_PASSWORD: "${PGSQL_PASSWORD}" 87 | networks: 88 | - openweb-network 89 | 90 | #RabbitMQ 91 | rabbitmq: 92 | image: rabbitmq 93 | container_name: "${PREFIX}rabbitmq" 94 | volumes: 95 | - ./db/rabbitmq:/var/lib/rabbitmq 96 | - ./scripts:/bin/app 97 | environment: 98 | RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE} 99 | RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER} 100 | RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS} 101 | ports: 102 | - "${RABBITMQ_TRAFFIC_PORT}:5672" 103 | - "${RABBITMQ_MANAGER_PORT}:15672" 104 | networks: 105 | - openweb-network 106 | 107 | #Redis Service 108 | redis: 109 | image: redis 110 | container_name: "${PREFIX}redis" 111 | restart: unless-stopped 112 | tty: true 113 | ports: 114 | - "${REDIS_PORT}:6379" 115 | volumes: 116 | - ./db/redis:/var/lib/redis 117 | - ./scripts:/bin/app 118 | environment: 119 | - REDIS_REPLICATION_MODE=master 120 | networks: 121 | - openweb-network 122 | 123 | #Memcached 124 | memcached: 125 | image: memcached 126 | container_name: "${PREFIX}memcached" 127 | restart: unless-stopped 128 | tty: true 129 | ports: 130 | - "${MEMCACHED_PORT}:11211" 131 | networks: 132 | - openweb-network 133 | 134 | #MongoDB 135 | mongodb: 136 | image: "mongo:${MONGODB_VERSION}" 137 | container_name: "${PREFIX}mongo" 138 | volumes: 139 | - ./db/mongodb:/data/db 140 | environment: 141 | MONGO_INITDB_ROOT_USERNAME: "${MONGODB_USER}" 142 | MONGO_INITDB_ROOT_PASSWORD: "${MONGODB_PASSWORD}" 143 | networks: 144 | - openweb-network 145 | 146 | #Clickhouse 147 | clickhouse-server: 148 | image: yandex/clickhouse-server 149 | container_name: "${PREFIX}clickhouse-server" 150 | restart: unless-stopped 151 | ports: 152 | - "${CLICKHOUSE_DB_PORT}:8123" 153 | - "${CLICKHOUSE_CLIENT_PORT}:9000" 154 | - "${CLICKHOUSE_REPLICATION_PORT}:9009" 155 | volumes: 156 | - ./db/clickhouse:/var/lib/clickhouse 157 | - ./scripts:/bin/app 158 | ulimits: 159 | nproc: 65535 160 | nofile: 161 | soft: 262144 162 | hard: 262144 163 | client: 164 | image: yandex/clickhouse-client 165 | container_name: "${PREFIX}clickhouse-client" 166 | command: ['--host', 'server'] 167 | 168 | #Docker Networks 169 | networks: 170 | openweb-network: 171 | driver: bridge 172 | #Volumes 173 | volumes: 174 | dbdata: 175 | driver: local 176 | -------------------------------------------------------------------------------- /bin/app: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if ! command -v dialog &> /dev/null 4 | then 5 | echo "dialog not found" 6 | exit 7 | fi 8 | 9 | RESULT='' 10 | WIDTH=15 11 | HEIGHT=50 12 | 13 | BUILD_PREFIX='ow_' 14 | PARTS=(nginx php nodejs mysql posgresql rabbitmq redis memcached mongodb clickhouse python bash) 15 | 16 | 17 | function openDialog() 18 | { 19 | exec 3>&1; 20 | RESULT=$(dialog --keep-tite --clear "$@" 2>&1 1>&3); 21 | exec 3>&-; 22 | clear 23 | } 24 | 25 | function actionSettings() 26 | { 27 | if [ ! -f "../.env" ]; then 28 | openDialog --msgbox ".env file not found." $WIDTH $HEIGHT 29 | actionBuild 30 | fi 31 | 32 | LINE=0 33 | POSITION=1 34 | OPTIONS='' 35 | ARRAY_PARAMS=() 36 | 37 | for SETTING in $(awk -F'=' '/=/{ print $1, $2}' ../.env) 38 | do 39 | ((LINE++)) 40 | if [ $LINE = 2 ]; then 41 | OPTIONS+="$SETTING $POSITION 35 25 30 " 42 | LINE=0 43 | ((POSITION++)) 44 | else 45 | OPTIONS+="$SETTING $POSITION 1 " 46 | ARRAY_PARAMS+=($SETTING) 47 | fi 48 | done 49 | 50 | openDialog --form "\nContainer settings" 36 80 35 $OPTIONS 51 | 52 | if [[ ! $RESULT =~ (.+) ]]; then 53 | actionMenu 54 | fi 55 | 56 | I=0 57 | while read -r LINE; do 58 | sed -i s/${ARRAY_PARAMS[$I]}=.*/${ARRAY_PARAMS[$I]}=$LINE/ ../.env 59 | ((I++)) 60 | done <<< $RESULT 61 | 62 | actionMenu 63 | } 64 | 65 | function actionBuild() 66 | { 67 | if [ -f "../docker-compose.yml" ]; then 68 | dialog --yesno "If you continue further, the old config docker will be deleted" $WIDTH $HEIGHT 69 | fi 70 | 71 | rm ../.env 72 | cat ../parts/env_head >> ../.env 73 | rm ../docker-compose.yml 74 | cat ../parts/head.yml >> ../docker-compose.yml 75 | 76 | case $? in 77 | 0 ) 78 | openDialog --inputbox "Enter prefix for conteiner" $WIDTH $HEIGHT $BUILD_PREFIX 79 | if [[ $RESULT =~ (.+) ]]; then 80 | BUILD_PREFIX=$RESULT 81 | fi 82 | 83 | sed -i s/{PREFIX}/$BUILD_PREFIX/ ../.env 84 | 85 | OPTIONS='' 86 | for PART in ${PARTS[*]} 87 | do 88 | OPTIONS+="$PART   off " 89 | done 90 | 91 | openDialog --checklist "Select modules, to select" 20 $HEIGHT 100 $OPTIONS 92 | 93 | if [[ ! $RESULT =~ (.+) ]]; then 94 | actionBuild 95 | fi 96 | 97 | SELECT_PARTS=($(echo $RESULT | tr " " "\n")) 98 | for PART in "${SELECT_PARTS[@]}" 99 | do 100 | cat ../parts/env_$PART >> ../.env 101 | cat ../parts/$PART.yml >> ../docker-compose.yml 102 | done 103 | 104 | cat ../parts/footer.yml >> ../docker-compose.yml 105 | 106 | openDialog --msgbox "Building conteiners complited!" $WIDTH $HEIGHT 107 | actionSettings 108 | ;; 109 | esac 110 | clear 111 | 112 | actionMenu 113 | } 114 | 115 | function actionSSL() 116 | { 117 | clear 118 | ./ssl_generate 119 | clear 120 | 121 | actionMenu 122 | } 123 | 124 | function actionMenu() 125 | { 126 | openDialog --menu "Menu:" $WIDTH $HEIGHT 4 \ 127 | "Conteiners" "Conteiners panel" \ 128 | "Logs" "Logs conteiner" \ 129 | "Settings" "Configure conteiners" \ 130 | "Build" "Builder project" \ 131 | "SSL" "SSL certificate generate" \ 132 | "Exit" "Exit application" 133 | 134 | case $RESULT in 135 | 'Conteiners' ) 136 | actionConteinersPanel 137 | ;; 138 | "Logs" ) 139 | docker-compose logs 140 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 141 | read 142 | actionMenu 143 | ;; 144 | "Settings" ) 145 | actionSettings 146 | ;; 147 | "Build" ) 148 | actionBuild 149 | ;; 150 | "SSL" ) 151 | actionSSL 152 | ;; 153 | "Exit" ) 154 | exit 155 | clear 156 | ;; 157 | esac 158 | } 159 | 160 | function actionStatusesConteiners() 161 | { 162 | MESSAGE='' 163 | LINE=0 164 | for CONTEINER_INFO in $(docker-compose ps | tail -n +3 | awk '{ print $1, $4, $5 }') 165 | do 166 | ((LINE++)) 167 | MESSAGE+="$CONTEINER_INFO" 168 | if [ $LINE = 3 ]; then 169 | MESSAGE+="\n" 170 | LINE=0 171 | else 172 | MESSAGE+=" " 173 | fi 174 | done 175 | 176 | openDialog --msgbox "$MESSAGE" $WIDTH 100 177 | } 178 | 179 | function actionConteinersPanel() 180 | { 181 | openDialog --menu "Menu:" $WIDTH $HEIGHT 5 \ 182 | "Start" "Start all conteiners" \ 183 | "Stop" "Stop all conteiners" \ 184 | "Restart" "Restart all conteiners" \ 185 | "Statuses" "Status conteiners" \ 186 | "List" "List conteiners" \ 187 | "Back" "Back to menu" 188 | 189 | case $RESULT in 190 | "Start" ) 191 | sh start 192 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 193 | read 194 | actionConteinersPanel 195 | ;; 196 | "Stop" ) 197 | sh stop 198 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 199 | read 200 | actionConteinersPanel 201 | ;; 202 | "Restart" ) 203 | sh stop 204 | sh start 205 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 206 | read 207 | actionConteinersPanel 208 | ;; 209 | "Statuses" ) 210 | actionStatusesConteiners 211 | ;; 212 | "List" ) 213 | actionConteinersList 214 | ;; 215 | "Back" ) 216 | actionMenu 217 | ;; 218 | esac 219 | } 220 | 221 | function actionControllerConteiner() 222 | { 223 | openDialog --menu "$1:" $WIDTH $HEIGHT 5 \ 224 | "Run" "Run conteiner" \ 225 | "Stop" "Stop conteiner" \ 226 | "Restart" "Restart conteiner" \ 227 | "Enter" "Enter to conteiner" \ 228 | "Log" "Log conteiner" \ 229 | "Back" "Back to menu" 230 | 231 | case $RESULT in 232 | "Run" ) 233 | cd ../ 234 | docker-compose start $1 235 | cd ./bin 236 | actionControllerConteiner $1 237 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 238 | read 239 | ;; 240 | "Stop" ) 241 | cd ../ 242 | docker-compose stop $1 243 | cd ./bin 244 | actionControllerConteiner $1 245 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 246 | read 247 | ;; 248 | "Restart" ) 249 | cd ../ 250 | docker-compose stop $1 251 | docker-compose start $1 252 | cd ./bin 253 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 254 | read 255 | actionControllerConteiner $1 256 | ;; 257 | "Enter" ) 258 | echo -e "\033[1;32mPlease input comand \033[1;33mexit \033[1;32mto back application.\033[0m" 259 | docker-compose exec $1 /bin/bash 260 | actionControllerConteiner $1 261 | ;; 262 | "Log" ) 263 | docker-compose logs $1 264 | echo -e "\033[1;32mPlease press any key to continue ...\033[0m" 265 | read 266 | actionControllerConteiner $1 267 | ;; 268 | "Back" ) 269 | actionConteinersList 270 | ;; 271 | esac 272 | } 273 | 274 | function actionConteinersList() 275 | { 276 | NUMBER_CONTAINER=1 277 | OPTIONS='' 278 | ARRAY_CONTAINERS=('none') 279 | cd ../ 280 | for DOCKER_NAME in $(docker-compose ps --service) 281 | do 282 | OPTIONS+="$NUMBER_CONTAINER $DOCKER_NAME " 283 | ((NUMBER_CONTAINER++)) 284 | ARRAY_CONTAINERS+=($DOCKER_NAME) 285 | done 286 | cd ./ 287 | 288 | openDialog --menu "Menu:" $WIDTH $HEIGHT 5 $OPTIONS "Exit" "Back to menu" 289 | 290 | if [ $RESULT = "Exit" ]; then 291 | actionConteinersPanel 292 | return 293 | fi 294 | 295 | actionControllerConteiner ${ARRAY_CONTAINERS[$RESULT]} 296 | } 297 | 298 | 299 | actionMenu 300 | --------------------------------------------------------------------------------