Compare commits

..

116 Commits

Author SHA1 Message Date
4c410fa89f + python projects nginx example config and postgis and additional python server docker examples 2025-06-24 13:53:12 +03:00
92cefd6fcd + use ssh key from host machine in workspace container 2025-06-11 20:47:53 +03:00
94fe970cd3 + added ARG definition for FINE UTILS
+ added wget, unzip, curl, grep, dbview to FINE UTILS
2025-06-11 19:49:14 +03:00
537b5ad4be + python services and python nginx conf example
+ also example of Dockerfile for python project and needed to place onto your project directory
2025-04-08 17:13:21 +03:00
cb5c989830 * simple renaming 2025-01-31 00:20:12 +03:00
3ed6f5dfff + quick script for nodejs docker compose yml fast interactions 2025-01-20 12:51:27 +03:00
8299d7276a + gzip config example for nginx 2025-01-17 14:29:01 +03:00
50148659c8 + additional doc for detect your gateway/host ip in docker network and describe how to ufw allow appropriate ports 2025-01-16 09:21:37 +03:00
65c9b61c51 * force to restart php fpm container after turn on / off xdebug 2025-01-16 08:59:41 +03:00
e699876976 * use helpers script with dot version function for xdebug start and quit script
* condionaly laynch sed tunr on profile options for php 74 & correct appropriate logic
2025-01-15 13:17:54 +03:00
21140eab2d * automatic install redis in pecl
* correct for dot style version notation of php images tagged and pushed into docker hub
2025-01-15 11:17:10 +03:00
1ea5e96fcb * use dc alias from host system shell for execute docker compopse helper commands (and depended by os docker composer or docker-compose command style)
* extend quick helper script with settings and dynamic php version variable
* link redis-local config as volume & correct include path
* minio access keys moved to conrecte service instance
* corrected used php version for workspace81
2025-01-15 11:04:59 +03:00
49e44c9229 + php src container fully refactored and lightweight
* on host system container also refactored, some env options moved from .env to docker-compose example
* dnsmasq now is separate service file
+ php 8.3 support
* xdebug launch also refactored and lightweight
* tested and worked python environment with pyenv (on today without supervisor)
* database container and appropriate gui applications for management database systems moved into separate service files
+ build src php container helper
- remove unnecessary docker compose file version directive
- remove minio thing from the host php services
* use redis-local.conf from example and lightweight main redis conf file
2025-01-13 18:16:42 +03:00
57c56567cf * use full database container name for detect id of db container for mariadb-dump operations 2025-01-06 14:14:14 +03:00
2695d1f759 Merge branch 'refs/heads/master' into uvicorn
# Conflicts:
#	dockerfiles/workspace/.shell-aliases
2024-11-25 09:18:57 +03:00
3cb9b6e925 + supervisor, python and uvicorn in workspace74 (partially commit - no fully worked solution) 2024-11-25 09:18:19 +03:00
4e0c2dbfc4 * minor local changes - unused shell aliases and some slash 2024-11-25 09:13:53 +03:00
3faf8a698a + root mariadb account default extra file
* pma and inbucket port presented in docker compose example file (do not use that for prod environment with this docker structure build)
2024-11-20 15:36:12 +03:00
f3b9303754 + allowing * domains for acceptable connections by cors politic - allowing downloading files from uploads dir from scripting download 2024-11-07 16:20:43 +03:00
0e1bd3246d + default time zone for mariadb 2024-11-02 12:18:14 +03:00
184fc3dc2d + optional ssl for nginx 2024-10-18 15:33:35 +03:00
2db44cb74e + mysqld example config with explicit_defaults_for_timestamp option 2024-09-29 10:26:52 +03:00
e17103f4ab * proxy buffers need for nuxt projects 2024-09-18 13:34:53 +03:00
e59e976cd9 + increase proxy buffers for headers from proxy upstream & increase client header buffers 2024-09-18 13:32:32 +03:00
33a0756530 + directus docker service for mi project with nginx config 2024-09-17 15:57:45 +03:00
5c1c94bfe2 + conditionally libreoffice install for php 2024-08-28 18:31:49 +03:00
46a0154871 + libreoffice-nogui is installed in php81, php.82, workspace81 and workspace82 images 2024-08-27 15:30:04 +03:00
25368c8408 * updated dnsmasq to 2.90 (+ dnsmasq example config) 2024-08-23 18:44:02 +03:00
c37ff438d8 * updated dnsmasq to 2.90 2024-08-23 18:43:23 +03:00
b0cd920e41 * simplified browserless service configuration 2024-08-08 21:57:45 +03:00
dc3b0a76a7 * close pma & inblucket ports
+ auth and example nginx config for local phpmyadmin service
2024-08-06 19:40:40 +03:00
35baceb62a + php8.2 example docker compose service
+ e2e example docker compose config file with browserless service
2024-08-06 19:17:47 +03:00
f63747e59f + fastcgi setting SERVER_NAME for correctly working xdebug with some server names config 2024-07-08 15:33:11 +03:00
1677ffe648 + change ip for host.docker.internal to localhost on windows hosts file (example for correctly working vite_dev server both from host browser and docker browserless browser) 2024-06-07 14:54:13 +03:00
32b98ae170 + php82 src image 2024-04-15 16:55:28 +03:00
5dcd3a131c + artisan bash autocompletion
* turn off mc client from workspace base image
2024-04-07 16:19:37 +03:00
a3f7465955 + nodejs applications support with pm2 manager
* use dockerhost in xdebug3 config for php8 in workspace
* set local docker resolver for nginx
* refactored base configs (join in one base config) and better separate examples for third party services
* set default web port for inbucket to 82 instead of 9090, because last use for cockpit
2024-02-16 17:36:20 +03:00
a244fec29a + support with profiler option for xdebug3 2023-12-19 17:31:02 +03:00
eb64cd702a + true script dir option for fetching related bash-scripts config on some quick commands 2023-11-22 15:54:46 +03:00
fd7c8b9ac1 * xdebug config for workspace81 2023-11-18 18:14:21 +03:00
2049580005 * set default php version to 81 in quick scripts 2023-11-18 17:42:59 +03:00
b1b2e1d501 + separately nodejs versions for a different workspace containers 2023-10-22 20:50:58 +03:00
baa258b8fb + allowing to execute mysql query in bash script helper for entering mysql client in db container 2023-10-22 16:31:15 +03:00
cea2dbb653 * use php 81 as default 2023-09-28 08:15:45 +03:00
217250c0e0 * correct equals in xdebug helper scripts 2023-09-17 10:30:43 +03:00
a87fc51072 * minor changes - format location section and describe docker visualize graph in readme 2023-09-15 09:08:33 +03:00
d29546cb34 * rearrange service ordering
- pass https port
2023-08-10 14:46:42 +03:00
1b35c6927c + nuc certs into php74 2023-07-13 20:33:26 +03:00
767aa7ba37 * use mariadb-dump
* filter tailing mariadb general log
2023-07-13 13:19:08 +03:00
1771877fe8 + mariadb bash helper script launch mariadb client
+ redis ui`s in separate docker compose config
2023-07-06 17:37:47 +03:00
fc044a1185 - remove php 73 containers
* remove nodejs install from src builds
* fix composer auth secret path links
2023-05-08 22:06:12 +03:00
38cb19818a + tmux
+ slow cnf db config with general log options example
* fpm74 to php74 replacement fpm upstream name
2023-05-06 11:29:17 +03:00
c07f142607 * passing to workspace containers php memory and execute time limit to infinity and remove inapplicable php opts to cli execution (post and max upload size data) 2023-02-20 23:37:11 +03:00
ca9f40667b * use full path to docker_cmd config script in bash helpers 2023-02-04 17:47:02 +03:00
7de00f8385 * windows adjust docker cmd for update composer script 2023-01-29 12:26:48 +03:00
0bbc4eedd7 * windows adjust docker cmd 2023-01-29 12:24:45 +03:00
42d0209290 * correct elastic docker image name 2023-01-28 19:50:55 +03:00
75b35e22a9 + update composer bash helper script
* preventing create symlinks if symlink has exists
2023-01-24 16:27:20 +03:00
97609898e1 * worked icu el 2023-01-20 09:34:33 +03:00
15c6a8eb53 * make remaining bash scripts as executable
- remove unnecessary zone ru from example domain naming
* correct (un)create symlinks scripts
2023-01-17 11:55:27 +03:00
829107e5f5 - remove unnecessary volumes defines in general docker-compose yml file
- remove php73 in docker compose yml example file
* use only modern composer auth store path
2023-01-15 18:23:38 +03:00
ee023006ff * update readme about example files and dirs before build 2023-01-15 15:12:47 +03:00
dbe3a916f1 * renaming xdebug scripts for non-conflicts name with user defined scripts in home directory starts with s and q
+ tail db general log bash helper
* correct path to xdebug2 config for previous php 74 version
- remove unnecessary laradock example crontab because this script moved crontab-example dir
* improve (un)create symlinks script logic
* use only newly composer auth path
2023-01-15 15:08:15 +03:00
9fab9307b6 + uploads_upstream conf 2022-12-13 14:40:06 +03:00
71d4b97c46 + xdebug3 feature for php 8.1 2022-11-24 18:27:36 +03:00
c3d132b120 + php 8.1
* refactoring composer version & auth secrets apply separate for workspaces
2022-11-21 10:25:35 +03:00
d625dbb158 + composer v1 * v2 secrets 2022-11-21 05:51:16 +03:00
aa74376503 + webp in staticfiles nginx config 2022-08-21 18:38:09 +03:00
9bc71f7b2d * increase php default max post & upload size & set appropriate config option in default nginx config 2022-08-10 13:29:53 +03:00
c11eb7bf7c + php56 things 2022-07-29 06:37:46 +03:00
b0683316de * correct php74 upstream in yii example nginx config 2022-07-29 06:37:11 +03:00
2b24d70652 * copy base php dockerfile for might build php56 2022-07-16 20:28:18 +03:00
db86932c71 * choose composer version from userspace docker build 2022-07-10 13:45:06 +03:00
57cc040b3a + grav, s3, wordpress & yii nginx example configs 2022-07-02 11:40:10 +03:00
04d399489b * correct path for profiler output 2022-06-17 21:55:44 +03:00
de93f6746b * use separate php tmp dir 2022-05-16 21:42:49 +03:00
075f50b08c + komodoproject file to ignore 2022-05-15 18:34:07 +03:00
63500c4fff + git aliases in aliases.sh.example
* octobercms webp example nginx config moved to separate file
* use dns placeholder *.local.wpstudio.ru for example naming of local domains in nginx config
* up default nodejs version in env-example to lts/fermium
2022-05-07 21:49:47 +03:00
8c72843191 * disable short open tag on php by default 2022-04-28 14:40:52 +03:00
db2c2aac82 + location app docx 2022-03-14 18:30:26 +03:00
3cd2603bf3 - turn off php73 from nginx conf example by default 2022-03-04 00:48:14 +03:00
d6d86179e6 * true path for composer auth 2022-03-04 00:42:38 +03:00
2d0fc4385d * set root user before change php options in workspace build 2022-03-04 00:09:45 +03:00
54a04feae7 * fix workspace base image 2022-03-03 18:31:40 +03:00
6743629602 * xdebug in workspace downgrading to 2.x version
* with profiler option in xdebug workspace starter script
2022-02-03 19:10:36 +03:00
5cf2889c55 Merge remote-tracking branch 'origin/master' 2022-01-19 14:36:05 +03:00
ec68f3549e * fix bag name location 2022-01-19 14:35:54 +03:00
a2fb8827c3 + xdebug into workspace & opcache into php-fpm
+ docker image inspect instructions
2022-01-19 11:02:17 +03:00
4201d657d6 * jpgeg -> jpeg
+ mp4 into staticfiles
2021-12-21 12:45:45 +03:00
4a0dbb92d8 * php opt post max size 2021-12-16 23:13:09 +03:00
4bac781c3b - remove line break 2021-11-17 00:17:02 +03:00
471b5c1502 + webp example config 2021-11-17 00:15:59 +03:00
b85b503015 * octobercms config allow all xml files in web-root 2021-11-17 00:13:09 +03:00
cd38a60396 + woff2 support 2021-11-16 23:01:56 +03:00
be1385a4a5 * webp config from offline imageresponsive moved separate file in includes.d 2021-11-16 22:25:10 +03:00
cbb1d79584 + webp octobercms support 2021-11-16 21:35:42 +03:00
e6477518d2 * restart php-fpm container after enable profiler 2021-10-15 17:49:10 +03:00
0f9a528f62 - remove winpty things (fix spaces) 2021-10-11 18:02:50 +03:00
ea0ee2c28a - remove winpty things 2021-10-11 18:00:50 +03:00
d6b28eeb74 - Remove DST_Root_CA3 from workspace 2021-10-01 22:29:21 +03:00
b10442065d - turn off restart workspace container option after start|stop xdebug 2021-09-18 20:42:22 +03:00
8c8e29a918 + fastcgi SERVER_NAME with $host nginx variable for correctly passing server name to xdebug in phpstorm
* chmod to tmp folder in php-fpm container
2021-09-10 17:42:19 +03:00
1945097f11 * fix update apt
https://stackoverflow.com/questions/68802802/repository-http-security-debian-org-debian-security-buster-updates-inrelease
2021-09-03 10:26:30 +03:00
3535a09ce9 + profiler things
* fix custom node version install in workspace
2021-08-27 13:36:45 +03:00
93eddcdf84 + xdebug ini
* autostart and enable
+ php 73 and 74 xDebug (termporary):
2021-08-26 12:14:10 +03:00
10231ac87b + inbucket in example 2021-08-11 09:56:20 +03:00
c5e6559db2 + example of network aliases for nginx 2021-08-06 17:32:20 +03:00
73e2eb7853 + possible change node version with build finish image of workspace 2021-08-03 16:52:21 +03:00
db0bb333fa * reuse ARG in workspace 2021-07-14 18:57:29 +03:00
0a3a980f8b * correct filepath to composer auth 2021-07-14 16:23:32 +03:00
07e3499946 * Increase docker-compose.yml file version from 3.6 to 3.9 2021-07-13 20:05:17 +03:00
9103721fbe + remote_autostart & remote_enable in xdebug set to 1 with xdebug start 2021-06-24 14:18:46 +03:00
4ae9b30644 - disable numeric assets rewrite 2021-06-01 10:03:24 +03:00
e9596a7e11 mtsql.sh fix 2021-05-12 16:42:56 +03:00
5f1e9498c8 * simplify elastic container names
* turn on redis extension on workspace
2021-04-30 14:24:14 +03:00
ec31427cb7 * elastic main yml file to gitignore 2021-04-30 13:13:34 +03:00
141 changed files with 3649 additions and 2851 deletions

View File

@ -1,20 +1,30 @@
# Enter your Docker Host IP (will be appended to /etc/hosts). Default is `10.0.75.1` # Enter your gateway IP (your host IP under from docker containers) - that need for correctly worked xdebug from cli
DOCKER_HOST_IP=172.20.0.1 # For detect that IP use: docker network inspect structure_default | grep Gateway | xargs | cut -d ' ' -f2
# For UFW allowing ports on the host system: ufw allow to 172.18.0.1 port 9000,9003
DOCKER_HOST_IP=172.18.0.1
PROJECTS_DIR=/home/youruser/PhpstormProjects PROJECTS_DIR=/home/youruser/PhpstormProjects
PYTHON_PROJECTS_DIR=/home/dimti/PythonProjects
### Common ###############################################
CUSTOM_TZ=Europe/Moscow
CUSTOM_LOCALE=ru_RU.UTF-8
### WORKSPACE #############################################
### WORKSPACE ############################################# ### WORKSPACE #############################################
WORKSPACE_PUID=1000 WORKSPACE_PUID=1000
WORKSPACE_PGID=1000 WORKSPACE_PGID=1000
WORKSPACE_TIMEZONE=Europe/Moscow
WORKSPACE_INSTALL_YADM=true
WORKSPACE_INSTALL_FINE_UTILS=true
WORKSPACE_INSTALL_SSH=true
WORKSPACE_PHP_OPT_MEMORY_LIMIT=-1
### PHP-FPM ############################################# ### PHP-FPM #############################################
INSTALL_REDIS=true PHP_OPT_MEMORY_LIMIT=512M
INSTALL_PEAR_MAIL=true
PHP_OPT_SHORT_OPEN_TAG=On
PHP_OPT_MAX_EXECUTION_TIME=600
PHP_OPT_MEMORY_LIMIT=500M
PHP_OPT_UPLOAD_MAX_FILESIZE=20M
### MINIO S3 ############################################# PHP_OPT_POST_MAX_SIZE=800M
MINIO_ACCESS_KEY=s3.local PHP_OPT_UPLOAD_MAX_FILESIZE=200M
MINIO_SECRET_KEY=qbKTLqAumjYOYlCXCRk6
PHP_OPT_MAX_EXECUTION_TIME=600

6
.gitignore vendored
View File

@ -1,4 +1,6 @@
/.idea /.idea
/dockerfiles/ypt-encoder
/docker-compose.yml
/.env /.env
/docker-compose*
!/docker-compose.base.yml
!/docker-compose*.example
/config/nginx/includes.d/auth.passwd

View File

@ -1,3 +1,20 @@
# Prepare
Copy all example files and dir
Cop and set your username:
`.env.example`
Choose php version and redis needed redis containers
`docker-compose.yml.example`
`dockerfiles/workspace/crontab-example`
`dockerfiles/workspace/aliases.sh.example`
Set your site(s) root-mappings
`config/nginx/conf.d/vhosts.conf.example`
## First ## First
Create alias for `docker-compose` command. Create alias for `docker-compose` command.
@ -41,11 +58,33 @@ After execute created symlinks, you have some enter-points for vulnerable popula
### Xdebug ### Xdebug
For start debugging in php-fpm, also in workspace For start debugging in php-fpm, also in workspace
`./start-xdebug.sh [74|73]` - `74` by default `./xdebug-start.sh [74|81]` - `74` by default
For start debugging in php-fpm, also in workspace For start debugging in php-fpm, also in workspace
`./stop-xdebug.sh` or `./stop-xdebug.sh 73` if you launch start with php-version 73 `./xdebug-stop.sh` or `./stop-xdebug.sh 81` if you launch start new php version 81
#### Xdebug with profiler
Profiler saved your profiles into `/tmp` directory in own container.
In docker-compose.base.yml exists volume that represent `/tmp` directory to `./data/profiler`.
In this case `./data/profiler` must be have `777` chmod`s.
For starting xdebug with profiler enable you might:
`./xdebug-start.sh 74 1`
Or
`./xdebug-start.sh 74 profiler` if you like
Second argument must be have any string
For disable profiler - just simple launch
`./xdebug-quit.sh`
### Mysql ### Mysql
@ -80,6 +119,14 @@ For restart `nginx` after some changes in nginx configuration, you might:
`./restart-nginx.sh` `./restart-nginx.sh`
### Elastic
Copy example
Launch:
`dc -f docker-compose.elastic.yml up -d elastic`
## Src build need DOCKER_BUILDKIT ## Src build need DOCKER_BUILDKIT
If you want build own workspace image. You need export environment variable If you want build own workspace image. You need export environment variable

15
bash/_docker-cmd.sh Normal file
View File

@ -0,0 +1,15 @@
#!/bin/bash
# Grab OS type
if [[ "$(uname)" == "Darwin" ]]; then
OS_TYPE="OSX"
else
OS_TYPE=$(expr substr $(uname -s) 1 5)
fi
DOCKER_CMD=docker
if [[ $OS_TYPE == "MINGW" ]]; then
DOCKER_CMD="winpty docker"
fi
export DOCKER_CMD

5
bash/_helpers.sh Normal file
View File

@ -0,0 +1,5 @@
function dot_version() {
sed -r 's/^([[:digit:]])/\1./g' <<< $1
}
export -f dot_version

View File

@ -0,0 +1,2 @@
#!/bin/bash
sed -i 's/.* host.docker.internal/127.0.0.1 host.docker.internal/' /c/Windows/System32/drivers/etc/hosts

15
bash/db-restart.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
. $DIR/bash/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
CONTAINER=$(docker ps | grep db | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: db"
exit 1
fi
$DOCKER_CMD restart ${CONTAINER}

View File

@ -1,9 +1,9 @@
#!/bin/bash #!/bin/bash
CONTAINER=$(docker ps | grep db | awk '{print $1}') CONTAINER=$(docker ps | grep mariadb | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: db" echo "Unable to find container: db"
exit 1 exit 1
fi fi
docker exec -ti ${CONTAINER} mysqldump -u root -p123456 $1 | pv > $2 docker exec -ti ${CONTAINER} mariadb-dump -u root -p123456 $1

View File

@ -1,7 +1,13 @@
#!/bin/bash #!/bin/bash
SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
. $SCRIPT_DIR/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
PHP_VERSION=$1 # Without dot PHP_VERSION=$1 # Without dot
if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=74; fi if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=81; fi
CONTAINER=$(docker ps | grep workspace${PHP_VERSION} | awk '{print $1}') CONTAINER=$(docker ps | grep workspace${PHP_VERSION} | awk '{print $1}')
@ -10,4 +16,4 @@ if [[ -z "${CONTAINER}" ]]; then
exit 1 exit 1
fi fi
docker exec -ti ${CONTAINER} su laradock $DOCKER_CMD exec -ti ${CONTAINER} su laradock

15
bash/mariadb.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
. $SCRIPT_DIR/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
CONTAINER=$(docker ps | grep mariadb | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: db"
exit 1
fi
$DOCKER_CMD exec -ti ${CONTAINER} bash -c 'LANG=ru_RU.UTF-8 mariadb -u root -p123456'

View File

@ -1,9 +1,29 @@
#!/bin/bash #!/bin/bash
CONTAINER=$(docker ps | grep db | awk '{print $1}') SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
. $SCRIPT_DIR/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
CONTAINER=$(docker ps | grep mariadb | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: db" echo "Unable to find container: db"
exit 1 exit 1
fi fi
docker exec -ti ${CONTAINER} bash -c 'LANG=ru_RU.UTF-8 mysql -u root -p123456' MYSQL_CMD='mysql -u root -p123456'
SQL_QUERY=$1
if [[ -n "${SQL_QUERY}" ]]; then
MYSQL_CMD="${MYSQL_CMD} -e \"${SQL_QUERY}\""
SELECTED_DB=$2
if [[ -n "${SELECTED_DB}" ]]; then
MYSQL_CMD="${MYSQL_CMD} \"${SELECTED_DB}\""
fi
fi
$DOCKER_CMD exec -ti ${CONTAINER} bash -c "LANG=ru_RU.UTF-8 ${MYSQL_CMD}"

6
bash/nginx-ssl-gen.sh Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
cd ${DIR}/config/nginx/ssl.d && \
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj \
"/C=XX/ST=RU/L=RU/O=WPS/OU=Dev/CN=test"

22
bash/pm2-restart.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
. $DIR/bash/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
PM2_SERVICE=$1
if [[ -z "${PM2_SERVICE}" ]]; then
echo "Usage: $(basename $0) NODEJS_PROJECT_NAME"
exit 1
fi
CONTAINER=$(docker ps | grep "pm2-${PM2_SERVICE}" | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: db"
exit 1
fi
$DOCKER_CMD restart ${CONTAINER}

22
bash/python-restart.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
. $DIR/bash/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
PYTHON_SERVICE=$1
if [[ -z "${PYTHON_SERVICE}" ]]; then
echo "Usage: $(basename $0) PYTHON_PROJECT_NAME"
exit 1
fi
CONTAINER=$(docker ps | grep "python-${PYTHON_SERVICE}" | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: db"
exit 1
fi
$DOCKER_CMD restart ${CONTAINER}

View File

@ -1,9 +0,0 @@
#!/bin/bash
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
PHP_VERSION=$1 # Without dot
if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=74; fi
${DIR}/dockerfiles/php-fpm/xdebug.sh stop ${PHP_VERSION}
${DIR}/dockerfiles/workspace/xdebug.sh stop ${PHP_VERSION}

View File

@ -1,4 +1,10 @@
#!/bin/bash #!/bin/bash
SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
. $SCRIPT_DIR/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
CONTAINER=$(docker ps | grep nginx | awk '{print $1}') CONTAINER=$(docker ps | grep nginx | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then if [[ -z "${CONTAINER}" ]]; then
@ -6,4 +12,4 @@ if [[ -z "${CONTAINER}" ]]; then
exit 1 exit 1
fi fi
docker exec -ti ${CONTAINER} nginx -s reload $DOCKER_CMD exec -ti ${CONTAINER} nginx -s reload

View File

@ -0,0 +1,20 @@
#!/bin/bash
SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
. $SCRIPT_DIR/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
PHP_VERSION=$1 # Without dot
if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=74; fi
CONTAINER=$(docker ps | grep workspace${PHP_VERSION} | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: workspace${PHP_VERSION}"
exit 1
fi
$DOCKER_CMD exec -ti ${CONTAINER}

View File

@ -1,9 +0,0 @@
#!/bin/bash
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
PHP_VERSION=$1 # Without dot
if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=74; fi
${DIR}/dockerfiles/php-fpm/xdebug.sh start ${PHP_VERSION}
${DIR}/dockerfiles/workspace/xdebug.sh start ${PHP_VERSION}

11
bash/tail-db-general-log.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
# Not working on windows symlinks
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
GENERAL_LOG_FILE_PATH="${DIR}/log/mariadb/mariadb.log"
sudo truncate -s 0 $GENERAL_LOG_FILE_PATH
clear
sudo tail -f $GENERAL_LOG_FILE_PATH | grep -Ev "(Close|Prepare)"

9
bash/tail-nginx-access-log.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
# Not working on windows symlinks
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
LOG_FILE_PATH="${DIR}/log/nginx/access.log"
clear
tail -f $LOG_FILE_PATH

9
bash/tail-nginx-error-log.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
# Not working on windows symlinks
DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)"
LOG_FILE_PATH="${DIR}/log/nginx/error.log"
clear
tail -f $LOG_FILE_PATH

24
bash/update-composer.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
. $SCRIPT_DIR/_docker-cmd.sh || {
echo "no docker cmd is presented" && exit 1
}
PHP_VERSION=$1 # Without dot
COMPOSER_VERSION=$2
if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=74; fi
CONTAINER=$(docker ps | grep workspace${PHP_VERSION} | awk '{print $1}')
if [[ -z "${CONTAINER}" ]]; then
echo "Unable to find container: workspace${PHP_VERSION}"
exit 1
fi
if [[ -z "${COMPOSER_VERSION}" ]]; then
COMPOSER_VERSION=1
fi
$DOCKER_CMD exec -ti "${CONTAINER}" composer self-update --${COMPOSER_VERSION}

45
bash/xdebug-quit.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/bash
SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
set -e
. $SCRIPT_DIR/_helpers.sh || {
echo "no helpers" && exit 1
}
cd "$SCRIPT_DIR/.."
PHP_VERSION=$1
if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=81; fi
WITH_PROFILER=$2
PHP_DOT_VERSION=$(dot_version ${PHP_VERSION})
PHP_FPM_CONTAINER=$(docker ps | grep "php${PHP_VERSION}" | awk '{print $1}')
WORKSPACE_CONTAINER=$(docker ps | grep "workspace${PHP_VERSION}" | awk '{print $1}')
PHP_FPM_XDEBUG_EXT_PATH=/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
WORKSPACE_XDEBUG_EXT_PATH=/etc/php/${PHP_DOT_VERSION}/cli/conf.d/20-xdebug.ini
PHP_FPM_XDEBUG_CONFIG_PATH=/usr/local/etc/php/conf.d/xdebug.ini
WORKSPACE_XDEBUG_CONFIG_PATH=/etc/php/${PHP_DOT_VERSION}/cli/conf.d/xdebug.ini
SED_XDEBUG_ON="sed -i 's/^zend_extension=/;zend_extension=/g'"
docker exec -it "${PHP_FPM_CONTAINER}" bash -c "${SED_XDEBUG_ON} ${PHP_FPM_XDEBUG_EXT_PATH}"
docker exec -it "${WORKSPACE_CONTAINER}" bash -c "${SED_XDEBUG_ON} ${WORKSPACE_XDEBUG_EXT_PATH}"
echo "Xdebug off: $PHP_VERSION"
if [ "${PHP_VERSION}" = 74 ]; then
SED_PROFILER_OFF="sed -i 's/^xdebug.profiler_enable=.*/xdebug.profiler_enable=0/g'"
else
SED_PROFILER_OFF="sed -i 's/^xdebug.mode=.*/xdebug.mode=off/g'"
fi
docker exec -it "${PHP_FPM_CONTAINER}" bash -c "${SED_PROFILER_OFF} ${PHP_FPM_XDEBUG_CONFIG_PATH}"
docker exec -it "${WORKSPACE_CONTAINER}" bash -c "${SED_PROFILER_OFF} ${WORKSPACE_XDEBUG_CONFIG_PATH}"
docker restart "${PHP_FPM_CONTAINER}"

58
bash/xdebug-start.sh Executable file
View File

@ -0,0 +1,58 @@
#!/bin/bash
# Line above doe not correctly work for this script symlinks
#SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# And symlinks are not working on windows.
SCRIPT_DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
set -e
. $SCRIPT_DIR/_helpers.sh || {
echo "no helpers" && exit 1
}
cd "$SCRIPT_DIR/.."
PHP_VERSION=$1
if [[ -z "${PHP_VERSION}" ]]; then PHP_VERSION=81; fi
WITH_PROFILER=$2
PHP_DOT_VERSION=$(dot_version ${PHP_VERSION})
PHP_FPM_CONTAINER=$(docker ps | grep "php${PHP_VERSION}" | awk '{print $1}')
WORKSPACE_CONTAINER=$(docker ps | grep "workspace${PHP_VERSION}" | awk '{print $1}')
PHP_FPM_XDEBUG_EXT_PATH=/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
WORKSPACE_XDEBUG_EXT_PATH=/etc/php/${PHP_DOT_VERSION}/cli/conf.d/20-xdebug.ini
PHP_FPM_XDEBUG_CONFIG_PATH=/usr/local/etc/php/conf.d/xdebug.ini
WORKSPACE_XDEBUG_CONFIG_PATH=/etc/php/${PHP_DOT_VERSION}/cli/conf.d/xdebug.ini
SED_XDEBUG_ON="sed -i 's/^;zend_extension=/zend_extension=/g'"
docker exec -it "${PHP_FPM_CONTAINER}" bash -c "${SED_XDEBUG_ON} ${PHP_FPM_XDEBUG_EXT_PATH}"
docker exec -it "${WORKSPACE_CONTAINER}" bash -c "${SED_XDEBUG_ON} ${WORKSPACE_XDEBUG_EXT_PATH}"
echo "Turn on xdebug: $PHP_VERSION"
if [ -n "${WITH_PROFILER}" ]; then
echo "Profiler enabled"
if [ "${PHP_VERSION}" = 74 ]; then
SED_DEBUG_OR_PROFILER_MODE_ON="sed -i 's/^xdebug.profiler_enable=.*/xdebug.profiler_enable=1/g'"
else
SED_DEBUG_OR_PROFILER_MODE_ON="sed -i 's/^xdebug.mode=.*/xdebug.mode=profile/g'"
fi
elif [ "${PHP_VERSION}" -ne 74 ]; then
SED_DEBUG_OR_PROFILER_MODE_ON="sed -i 's/^xdebug.mode=.*/xdebug.mode=debug/g'"
fi
if [ -n "${SED_DEBUG_OR_PROFILER_MODE_ON}" ]; then
docker exec -it "${PHP_FPM_CONTAINER}" bash -c "${SED_DEBUG_OR_PROFILER_MODE_ON} ${PHP_FPM_XDEBUG_CONFIG_PATH}"
docker exec -it "${WORKSPACE_CONTAINER}" bash -c "${SED_DEBUG_OR_PROFILER_MODE_ON} ${WORKSPACE_XDEBUG_CONFIG_PATH}"
fi
docker restart "${PHP_FPM_CONTAINER}"
echo 'Use this for resolve hostname in your IDE debugger:'
echo 'export PHP_IDE_CONFIG="serverName=myproject.cli.local.wpstudio.ru"'

3
config/dnsmasq/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*
!.gitignore
!.example

View File

@ -0,0 +1,10 @@
# log all dns queries
log-queries
# dont use hosts nameservers
no-resolv
# use google as default nameservers
server=8.8.4.4
server=8.8.8.8
# explicitly define host-ip mappings
# line below need real data
address=/domain/ip

2
config/mariadb/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.cnf
*.cnf.disable

View File

@ -0,0 +1,3 @@
[mysqld]
explicit_defaults_for_timestamp = ON
default_time_zone = '+03:00'

View File

@ -0,0 +1,3 @@
[client]
user = root
password = 123456

View File

@ -1 +1,2 @@
*.conf *.conf
*.conf.disable

View File

@ -0,0 +1,30 @@
gzip on;
gzip_disable "msie6";
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;

View File

@ -1,55 +1,65 @@
upstream php73 { #upstream php73 {
server php73:9000; # server php73:9000;
} #}
upstream php74 { upstream php74 {
server php74:9000; server php74:9000;
} }
upstream php81 {
server php81:9000;
}
map $http_host $root { map $http_host $root {
loc.octobercms /usr/share/nginx/html/someproject; octobercms.local.wpstudio.ru /usr/share/nginx/html/someproject;
loc.wordpress /usr/share/nginx/html/someprojectwp; wordpress.local.wpstudio.ru /usr/share/nginx/html/someprojectwp;
}
# @see https://github.com/OFFLINE-GmbH/oc-responsive-images-plugin/#responsive-images
map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}
resolver 127.0.0.11;
map $http_host $uploads_upstream {
wordpress.local.wpstudio.ru "https://somewp.site";
} }
server { server {
server_name loc.octobercms; listen 80 default;
listen 80;
root $root; root $root;
#include global/auth.conf; #include global/auth.conf;
#@see https://vcs.wpstudio.ru/wpstudio/nginx-examples #@see https://vcs.wpstudio.ru/wpstudio/nginx-examples
include includes.d/octobercms.conf; include includes.d/octobercms.conf;
include includes.d/staticfiles.conf; include includes.d/staticfiles.conf;
client_max_body_size 300M;
large_client_header_buffers 4 32k;
location ~ ^/index.php {
fastcgi_pass php81;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $host;
}
}
server {
listen 80;
server_name
some-php74-site.local.wpstudio.ru
;
root $root;
#include global/auth.conf;
#@see https://vcs.wpstudio.ru/wpstudio/nginx-examples
include includes.d/octobercms.conf;
include includes.d/staticfiles.conf;
client_max_body_size 300M;
location ~ ^/index.php { location ~ ^/index.php {
fastcgi_pass php74; fastcgi_pass php74;
include fastcgi_params; include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
} fastcgi_param SERVER_NAME $host;
}
server {
server_name loc.wordpress;
listen 80;
root $root;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass php73;
fastcgi_index index.php;
} }
} }

View File

@ -0,0 +1,18 @@
map $http_host $directus {
directus-mi.local.wpstudio.ru directus-mi;
}
server {
listen 80;
server_name
directus-mi.local.wpstudio.ru
;
location / {
resolver 127.0.0.11;
proxy_pass http://$directus:8055;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

View File

@ -0,0 +1,24 @@
server {
server_name loc.wpstudio-new;
listen 80;
root $root;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php74;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
## Begin - Security
# deny all direct access for these folders
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
# deny running scripts inside core system folders
location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat|example)$ { return 403; }
# deny running scripts inside user folder
location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny access to specific files in the root folder
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
## End - Security
}

View File

@ -0,0 +1,23 @@
map $http_host $pm2 {
someprojectone.build.local.wpstudio.ru pm2-someprojectone;
someprojecttwo.build.local.wpstudio.ru pm2-someprojecttwo;
}
server {
listen 80;
server_name
someprojectone.build.local.wpstudio.ru
someprojecttwo.build.local.wpstudio.ru
;
location / {
resolver 127.0.0.11;
proxy_pass http://$pm2:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_buffer_size 16k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
}
}

View File

@ -0,0 +1,22 @@
server {
server_name
octobercmswebp.ru.local.wpstudio.ru
;
listen 80;
root $root;
include includes.d/octobercms.conf;
include includes.d/offline-webp.conf;
include includes.d/staticfiles.conf;
location = /index.php {
fastcgi_pass php74;
include fastcgi_params;
fastcgi_read_timeout 3000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location = /plugins/offline/responsiveimages/webp.php {
fastcgi_pass php74;
include fastcgi_params;
fastcgi_read_timeout 3000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

View File

@ -0,0 +1,14 @@
server {
server_name pma.e2e.10ballov.ru;
listen 80;
include includes.d/auth.conf;
client_max_body_size 300M;
location / {
#resolver 127.0.0.11;
proxy_pass http://pma;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

View File

@ -0,0 +1,39 @@
map $http_host $python_upstream {
someproject.local.wpstudio.ru http://python-someproject:8000;
}
map $http_host $python_root {
someproject.local.wpstudio.ru /usr/share/nginx/python/someproject;
}
server {
listen 80;
server_name
someproject.local.wpstudio.ru
;
location / {
resolver 127.0.0.11;
proxy_pass $python_upstream;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
}
root $python_root;
location @media_proxy {
proxy_pass $uploads_upstream;
proxy_ssl_server_name on;
}
location ~ /media {
root $python_root;
try_files $uri @media_proxy;
expires max;
}
location ~ /static {
expires max;
}
}

View File

@ -0,0 +1,19 @@
server {
server_name s3.local;
ignore_invalid_headers off;
client_max_body_size 0;
proxy_buffering off;
location / {
proxy_pass http://minio:9000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
}
listen 80;
}

View File

@ -0,0 +1,65 @@
server {
server_name
wp-with-file-proxy.local.wpstudio.ru
;
listen 80;
root $root;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* ^/wp-content/uploads/.*$ {
expires max;
proxy_pass $uploads_upstream;
}
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SERVER_NAME $host;
fastcgi_pass php74;
fastcgi_index index.php;
fastcgi_read_timeout 3000;
}
}
server {
server_name
wp.local.wpstudio.ru
;
listen 80;
root $root;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SERVER_NAME $host;
fastcgi_pass php74;
fastcgi_index index.php;
fastcgi_read_timeout 3000;
}
}

View File

@ -0,0 +1,41 @@
server {
server_name
yii.local.slave.dimti.ru
backend.yii.local.slave.dimti.ru
;
root $root;
set $yii_bootstrap "index.php";
charset utf-8;
location / {
index index.html $yii_bootstrap;
try_files $uri $uri/ /$yii_bootstrap?$args;
}
location ~ ^/(protected|framework|themes/\w+/views) {
deny all;
}
# отключаем обработку запросов фреймворком к несуществующим статичным файлам
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
# передаем PHP-скрипт серверу FastCGI, прослушивающему адрес 127.0.0.1:9000
location ~ \.php {
fastcgi_split_path_info ^(.+\.php)(.*)$;
# позволяем yii перехватывать запросы к несуществующим PHP-файлам
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
fastcgi_pass php74;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;
# PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fsn;
}
# не позволять nginx отдавать файлы, начинающиеся с точки (.htaccess, .svn, .git и прочие)
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}

View File

@ -0,0 +1,5 @@
set $auth_basic Restricted;
auth_basic $auth_basic;
auth_basic_user_file includes.d/auth.passwd;
# Use openssl for generate basic password
# echo "MYUSER:$(openssl passwd -apr1 PASSWORD)" > auth.passwd

View File

@ -0,0 +1,14 @@
error_page 419 = @https;
set $is_https "0";
if ( $scheme ~* "^https") {
set $is_https "${is_https}1";
}
if ( $request_uri ~* "api/v") {
set $is_https "${is_https}1";
}
if ( $is_https = "0" ) {
return 419;
}
location @https {
rewrite ^ https://$http_host$request_uri permanent;
}

View File

@ -1,52 +1,56 @@
location / {
location / {
rewrite ^/.*$ /index.php last; rewrite ^/.*$ /index.php last;
} }
location ~ ^/combine.*\.(css|js) { location ~ ^/combine.*\.(css|js) {
rewrite ^/.*$ /index.php last; rewrite ^/.*$ /index.php last;
expires max; expires max;
} }
# Whitelist
## Let October handle if static file not exists
location ~ ^/favicon\.ico { try_files $uri /index.php; }
location ~ ^/sitemap\.xml { try_files $uri /index.php; }
location ~ ^/robots\.txt { try_files $uri /index.php; }
location ~ ^/humans\.txt { try_files $uri /index.php; }
## Let nginx return 404 if static file not exists # Whitelist
location ~ ^/storage/app/uploads/public { try_files $uri /404; }
location ~ ^/storage/app/media { try_files $uri /404; }
location ~ ^/storage/app/yml { try_files $uri /404; }
location ~ ^/files { try_files $uri /404; }
location ~ ^/storage/app/.*\.xls { try_files $uri /404; }
location ~ ^/storage/temp/public { try_files $uri /404; }
location ~ ^/modules/.*/assets { try_files $uri /404; } ## Let October handle if static file not exists
location ~ ^/modules/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/behaviors/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/behaviors/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/widgets/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/widgets/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/formwidgets/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/formwidgets/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/reportwidgets/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/reportwidgets/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/assets { try_files $uri /404; } location = /favicon.ico { try_files $uri /index.php; }
location ~ ^/plugins/.*/.*/resources { try_files $uri /404; } location ~ ^/.*\.xml { try_files $uri /index.php; }
location ~ ^/plugins/.*/.*/behaviors/.*/assets { try_files $uri /404; } location = /robots.txt { try_files $uri /index.php; }
location ~ ^/plugins/.*/.*/behaviors/.*/resources { try_files $uri /404; } location = /humans.txt { try_files $uri /index.php; }
location ~ ^/plugins/.*/.*/reportwidgets/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/reportwidgets/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/formwidgets/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/formwidgets/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/widgets/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/widgets/.*/resources { try_files $uri /404; }
location ~ ^/themes/.*/assets { ## Let nginx return 404 if static file not exists
location /storage/app/uploads/public {
# add proxy cors headers
add_header Access-Control-Allow-Headers "*" always;
add_header Access-Control-Allow-Methods "*" always;
add_header Access-Control-Allow-Origin "*" always;
try_files $uri /404; try_files $uri /404;
access_log off; }
expires max;
} location /storage/app/media { try_files $uri /404; }
location ~ ^/themes/.*/semantic { try_files $uri /404; } location /storage/app/yml { try_files $uri /404; }
location ~ ^/themes/.*/resources { try_files $uri /404; } location /storage/app/docx { try_files $uri /404; }
location /storage/app/resized { try_files $uri /404; }
location /storage/temp/public { try_files $uri /404; }
location ~ ^/modules/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/behaviors/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/behaviors/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/widgets/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/widgets/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/formwidgets/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/formwidgets/.*/resources { try_files $uri /404; }
location ~ ^/modules/.*/reportwidgets/.*/assets { try_files $uri /404; }
location ~ ^/modules/.*/reportwidgets/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/behaviors/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/behaviors/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/reportwidgets/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/reportwidgets/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/formwidgets/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/formwidgets/.*/resources { try_files $uri /404; }
location ~ ^/plugins/.*/.*/widgets/.*/assets { try_files $uri /404; }
location ~ ^/plugins/.*/.*/widgets/.*/resources { try_files $uri /404; }
location ~ ^/themes/.*/resources { try_files $uri /404; }

View File

@ -0,0 +1,8 @@
location ~* \.(jpe?g|png)$ {
# @see https://github.com/OFFLINE-GmbH/oc-responsive-images-plugin/#responsive-images
add_header Vary Accept;
try_files $uri$webp_suffix @router;
}
location @router {
rewrite ^(.*)$ /plugins/offline/responsiveimages/webp.php?path=$uri;
}

View File

@ -1,5 +1,23 @@
rewrite "^(.*)\.(\d{10})\.(css|js)$" $1.$3 break; #rewrite "^(.*)\.(\d{10})\.(css|js)$" $1.$3 break;
location ~* \.(jpg|jpeg|gif|png|svg|ico)$ { location ~* \.(gif|svg|ico)$ {
access_log off;
expires max;
log_not_found off;
error_page 404 = /empty;
}
location ~* \.jpe?g$ {
access_log off;
expires max;
log_not_found off;
error_page 404 = /empty;
}
location ~* \.webp {
access_log off;
expires max;
log_not_found off;
error_page 404 = /empty;
}
location ~* \.png$ {
access_log off; access_log off;
expires max; expires max;
log_not_found off; log_not_found off;
@ -9,7 +27,8 @@ location = /empty {
expires 0; expires 0;
empty_gif; empty_gif;
} }
location ~* \.(eot|ttf|woff|pdf|css|js)$ { location ~* \.(eot|ttf|woff|woff2|otf|pdf|css|js|mp4)$ {
try_files $uri /404;
access_log off; access_log off;
expires max; expires max;
} }

2
config/nginx/ssl.d/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

1
config/redis/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/redis-local.conf

View File

@ -0,0 +1,17 @@
# most usefully options
port 6379
tcp-backlog 128
protected-mode no
stop-writes-on-bgsave-error no
databases 4
# dump is not create if save options is gone
# save 3600 1
# name suffix needed because then old file is loaded, but no updated if no save options presented
dbfilename dump_250110.rdb
dir ./
always-show-logo no
syslog-enabled yes
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3
config/supervisor/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*
!*.example
!.gitignore

View File

@ -0,0 +1,9 @@
[fcgi-program:uvicorn]
process_name=uvicorn-tourtennis-%(process_num)d
socket=tcp://localhost:8000
command=/var/python/tourtennis/.venv/bin/uvicorn --fd 0 main:App
autostart=true
autorestart=true
numprocs=1
user=laradock
redirect_stderr=true

View File

@ -1,8 +1,15 @@
#!/bin/bash #!/bin/bash
DIR="$(realpath $(dirname "$(readlink -f "$0")"))" DIR="$(realpath $(dirname "$(readlink -f "$0")"))"
ln -s ${DIR}/bash/start-xdebug.sh ${HOME}/ BASH_SCRIPTS_DIR="${DIR}/bash"
ln -s ${DIR}/bash/quit-xdebug.sh ${HOME}/
ln -s ${DIR}/bash/restart-nginx.sh ${HOME}/ BASH_SCRIPTS=(`ls $BASH_SCRIPTS_DIR`)
ln -s ${DIR}/bash/mysql.sh ${HOME}/
ln -s ${DIR}/bash/enter-to-workspace.sh ${HOME}/ for FILENAME in "${BASH_SCRIPTS[@]}"; do
BASH_SCRIPT_FILE_PATH="${BASH_SCRIPTS_DIR}/${FILENAME}"
SYMLINK_PATH="${HOME}/${FILENAME}"
if [[ ! -f "${SYMLINK_PATH}" ]]; then
ln -s "${BASH_SCRIPT_FILE_PATH}" "${SYMLINK_PATH}"
fi
done

6
dc-node Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# N - nginx; P - php; R - redis; M - mariadb
ARGS=$@
bash -ic "dc -f docker-compose.yml -f docker-compose.nodejs.yml $ARGS"

6
dc-php Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# N - nginx; P - php; R - redis; M - mariadb
ARGS=$@
bash -ic "dc -f docker-compose.yml -f docker-compose.redis.yml -f docker-compose.mariadb.yml $ARGS"

View File

@ -1,48 +1,65 @@
version: '3.6'
services: services:
nginx: nginx:
image: nginx image: nginx
restart: always restart: always
networks:
default:
aliases:
- loc.10ballov
volumes: volumes:
- ${PROJECTS_DIR}:/usr/share/nginx/html - ${PROJECTS_DIR}:/usr/share/nginx/html
- ${PYTHON_PROJECTS_DIR}:/usr/share/nginx/python
- ./config/nginx/conf.d:/etc/nginx/conf.d - ./config/nginx/conf.d:/etc/nginx/conf.d
- ./config/nginx/includes.d:/etc/nginx/includes.d - ./config/nginx/includes.d:/etc/nginx/includes.d
- ./config/nginx/ssl.d:/etc/nginx/ssl.d
- ./log/nginx:/var/log/nginx - ./log/nginx:/var/log/nginx
ports: ports:
- "80:80" - "80:80"
- "443:443" - "443:443"
expose: php:
- 80
php-fpm:
build: build:
context: ./dockerfiles/php-fpm context: ./dockerfiles/php-fpm
args: args:
- INSTALL_REDIS=${INSTALL_REDIS} - CUSTOM_TZ=${CUSTOM_TZ}
- INSTALL_PEAR_MAIL=${INSTALL_PEAR_MAIL} - CUSTOM_LOCALE=${CUSTOM_LOCALE}
- PHP_OPT_SHORT_OPEN_TAG=${PHP_OPT_SHORT_OPEN_TAG}
- PHP_OPT_MAX_EXECUTION_TIME=${PHP_OPT_MAX_EXECUTION_TIME}
- PHP_OPT_MEMORY_LIMIT=${PHP_OPT_MEMORY_LIMIT} - PHP_OPT_MEMORY_LIMIT=${PHP_OPT_MEMORY_LIMIT}
- PHP_OPT_POST_MAX_SIZE=${PHP_OPT_POST_MAX_SIZE}
- PHP_OPT_UPLOAD_MAX_FILESIZE=${PHP_OPT_UPLOAD_MAX_FILESIZE} - PHP_OPT_UPLOAD_MAX_FILESIZE=${PHP_OPT_UPLOAD_MAX_FILESIZE}
- PHP_OPT_MAX_EXECUTION_TIME=${PHP_OPT_MAX_EXECUTION_TIME}
# Other args that might be used for customize in every separate container
# - INSTALL_PEAR_MAIL=true
# - INSTALL_LIBREOFFICE=true
# - INSTALL_NUC_CERTS=true
# - PHP_OPT_SHORT_OPEN_TAG=On
restart: always restart: always
volumes: volumes:
- ${PROJECTS_DIR}:/usr/share/nginx/html - ${PROJECTS_DIR}:/usr/share/nginx/html
expose: - ./data/profiler:/tmp/profiler
- 9000
workspace: workspace:
build: build:
context: ./dockerfiles/workspace context: ./dockerfiles/workspace
args: args:
- PUID=${WORKSPACE_PUID} - CUSTOM_TZ=${CUSTOM_TZ}
- PGID=${WORKSPACE_PGID} - CUSTOM_LOCALE=${CUSTOM_LOCALE}
- TZ=${WORKSPACE_TIMEZONE} - CUSTOM_PUID=${WORKSPACE_PUID}
- CUSTOM_PGID=${WORKSPACE_PGID}
- INSTALL_YADM=${WORKSPACE_INSTALL_YADM}
- INSTALL_FINE_UTILS=${WORKSPACE_INSTALL_FINE_UTILS}
- INSTALL_SSH=${WORKSPACE_INSTALL_SSH}
- PHP_OPT_MEMORY_LIMIT=${WORKSPACE_PHP_OPT_MEMORY_LIMIT}
# Other args that might be used for customize in every separate container
# - CUSTOM_COMPOSER_VERSION=1
# - INSTALL_WP_CLI=true
# - INSTALL_PEAR_MAIL=true
# - INSTALL_NODE=true
# - NODE_VERSION=v18.18.0
# - INSTALL_PYTHON=true
# - PYTHON_VERSION=3.12
# - INSTALL_SUPERVISOR=false # Not ready
# - INSTALL_LIBREOFFICE=true
# - INSTALL_NUC_CERTS=true
# - PHP_OPT_SHORT_OPEN_TAG=On
restart: always restart: always
volumes: volumes:
- ${PROJECTS_DIR}:/var/www - ${PROJECTS_DIR}:/var/www
- ./data/profiler:/tmp/profiler
- ./config/supervisor:/etc/supervisor/conf.d
extra_hosts: extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}" - "dockerhost:${DOCKER_HOST_IP}"
secrets: secrets:
@ -54,8 +71,13 @@ services:
restart: always restart: always
environment: environment:
MYSQL_ROOT_PASSWORD: 123456 MYSQL_ROOT_PASSWORD: 123456
ports: volumes:
- "3306:3306" - database:/var/lib/mysql
- ./hostfiles:/hostfiles
- ./log/mariadb:/var/log/mariadb
- ./config/mariadb:/etc/mysql/conf.d
security_opt:
- seccomp=unconfined
pma: pma:
image: phpmyadmin/phpmyadmin image: phpmyadmin/phpmyadmin
restart: always restart: always
@ -63,23 +85,39 @@ services:
PMA_HOST: db PMA_HOST: db
PMA_USER: root PMA_USER: root
PMA_PASSWORD: 123456 PMA_PASSWORD: 123456
ports: inbucket:
- "81:80" image: inbucket/inbucket
restart: always
expose:
- 2500
redis: redis:
image: redis image: redis
restart: always restart: always
command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ] command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
volumes: volumes:
- ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf
- ./config/redis/redis-local.conf:/usr/local/etc/redis/redis-local.conf
# Must be copied into main docker-compose yml-file elastic:
volumes: build:
database: context: ./dockerfiles/elastic
restart: on-failure
secrets: environment:
user_ssh_key: - discovery.type=single-node
file: ~/.ssh/id_rsa - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
user_known_hosts: ulimits:
file: ~/.ssh/known_hosts memlock:
composer_auth: soft: -1
file: ~/.composer/auth.json hard: -1
expose:
- "9200"
- "9300"
minio:
image: minio/minio:RELEASE.2020-06-12T00-06-19Z
restart: always
command: server /minio
pm2:
build:
context: ./dockerfiles/pm2
restart: always
expose:
- 3000

View File

@ -0,0 +1,42 @@
services:
directus-mi:
image: directus/directus:11.1.0
ports:
- 8055:8055
volumes:
- ./data/directus/mi/uploads:/directus/uploads
- ./data/directus/mi/extensions:/directus/extensions
depends_on:
- db
- redis-mi
environment:
KEY: ""
SECRET: ""
DB_CLIENT: "mysql"
DB_HOST: "db"
DB_PORT: "3306"
DB_DATABASE: "directus"
DB_USER: "directus"
DB_PASSWORD: "directus"
CACHE_ENABLED: "true"
CACHE_AUTO_PURGE: "true"
CACHE_STORE: "redis"
REDIS: "redis://redis-mi:6379"
CACHE_TTL: 1d
ADMIN_EMAIL: "info@wpstudio.ru"
ADMIN_PASSWORD: ""
TELEMETRY: false
ACCESS_TOKEN_TTL: 15m
REFRESH_TOKEN_TTL: 7d
LOG_LEVEL: debug
FLOWS_EXEC_ALLOWED_MODULES: "array:@elastic/elasticsearch"
WEBSOCKETS_ENABLED: true
# Make sure to set this in production
# (see https://docs.directus.io/self-hosted/config-options#general)
# PUBLIC_URL: "https://directus.example.com"

View File

@ -0,0 +1,9 @@
services:
dnsmasq:
restart: always
build:
context: ./dockerfiles/dnsmasq
volumes:
- ./config/dnsmasq/dnsmasq.conf:/etc/dnsmasq.conf
cap_add:
- NET_ADMIN # @see https://man7.org/linux/man-pages/man7/capabilities.7.html

10
docker-compose.e2e.yml.example Executable file
View File

@ -0,0 +1,10 @@
services:
browserless:
image: browserless/chrome:latest
environment:
- HOST=0.0.0.0
- PORT=3000
container_name: "browserless"
restart: always
ports:
- "3000:3000"

View File

@ -1,18 +0,0 @@
version: '3.6'
services:
elasticsearch:
build:
context: ./dockerfiles/elasticsearch
restart: on-failure
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 2g
expose:
- "9200"
- "9300"

View File

@ -1,23 +0,0 @@
version: '3.6'
services:
elasticsearch732:
extends:
file: docker-compose.elasticsearch.base.yml
service: elasticsearch
build:
dockerfile: elastic732.Dockerfile
volumes:
- elastic732:/usr/share/elasticsearch/data
elasticsearch752:
extends:
file: docker-compose.elasticsearch.base.yml
service: elasticsearch
build:
dockerfile: elastic752.Dockerfile
volumes:
- elastic752:/usr/share/elasticsearch/data
volumes:
elastic732:
elastic752:

View File

@ -0,0 +1,13 @@
services:
elastic:
extends:
file: docker-compose.base.yml
service: elastic
restart: always
build:
dockerfile: elastic752.Dockerfile
volumes:
- elastic:/usr/share/elastic/data
volumes:
elastic:

View File

@ -1,19 +1,9 @@
version: '3.6'
services: services:
dbpg:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: postgres
volumes:
- databasepg:/var/lib/postgresql/data
- ./hostfiles:/hostfiles
adminer: adminer:
image: adminer image: adminer
restart: always restart: always
ports: ports:
- 8080:8080 - 8081:8080
pgadmin: pgadmin:
image: dpage/pgadmin4 image: dpage/pgadmin4
restart: always restart: always
@ -24,6 +14,3 @@ services:
- "83:80" - "83:80"
volumes: volumes:
- ./hostfiles/pgadmin:/var/lib/pgadmin - ./hostfiles/pgadmin:/var/lib/pgadmin
volumes:
databasepg:

View File

@ -0,0 +1,27 @@
services:
redis-ui:
image: marian/rebrow
restart: always
ports:
- "5001:5001"
links:
- redis-example:redis-example
redis-stack:
image: redis/redis-stack:latest
restart: always
ports:
- "8001:8001"
expose:
- 6379
redis-commander:
container_name: redis-commander
hostname: redis-commander
image: ghcr.io/joeferner/redis-commander:latest
restart: always
environment:
- REDIS_HOSTS=intai:redis-intai:6379
ports:
- "8081:8081"
volumes:
elastic:

View File

@ -0,0 +1,14 @@
services:
db:
extends:
file: docker-compose.base.yml
service: db
pma:
extends:
file: docker-compose.base.yml
service: pma
ports:
- "81:80"
volumes:
database:

View File

@ -1,10 +0,0 @@
version: '3.6'
services:
minio:
image: minio/minio:RELEASE.2020-06-12T00-06-19Z
restart: always
environment:
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
command: server /minio

View File

@ -1,12 +1,13 @@
version: '3.6'
services: services:
minio: minio:
extends: extends:
file: docker-compose.minio.base.yml file: docker-compose.base.yml
service: minio service: minio
volumes: volumes:
- minio:/minio - minio:/minio
environment:
MINIO_ACCESS_KEY:
MINIO_SECRET_KEY:
volumes: volumes:
minio: minio:

View File

@ -0,0 +1,13 @@
services:
pm2-someprojectone:
extends:
file: docker-compose.base.yml
service: pm2
volumes:
- ${PROJECTS_DIR}/someprojectone/.output:/.output
pm2-someprojecttwo:
extends:
file: docker-compose.base.yml
service: pm2
volumes:
- ${PROJECTS_DIR}/someprojecttwo/.output:/.output

View File

@ -0,0 +1,27 @@
services:
dbpg:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: postgres
volumes:
- databasepg:/var/lib/postgresql/data
- ./hostfiles:/hostfiles
ports:
- "5432:5432"
db-project:
image: postgis/postgis:14-3.3
environment:
- POSTGRES_DB=project_db
- POSTGRES_USER=project_db_user
- POSTGRES_PASSWORD=project_db_password
ports:
- "5434:5432"
healthcheck:
test: [ "CMD-SHELL", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
volumes:
databasepg:

View File

@ -0,0 +1,30 @@
services:
python-someproject:
user: ${WORKSPACE_PUID}:${WORKSPACE_PGID}
build:
context: ${PYTHON_PROJECTS_DIR}/someproject
args:
- PUID=${WORKSPACE_PUID}
- PGID=${WORKSPACE_PGID}
- PYTHON_VERSION=3.9.20
volumes:
- ${PYTHON_PROJECTS_DIR}/someproject:/app
command: bash --init-file /venv/bin/activate -c "
python manage.py migrate
&& python manage.py collectstatic
&& uvicorn 'APP_NAME.asgi:application' --host 0.0.0.0
"
python-project:
user: ${WORKSPACE_PUID}:${WORKSPACE_PGID}
restart: always
build:
context: ${PYTHON_PROJECTS_DIR}/project
volumes:
- ${PYTHON_PROJECTS_DIR}/project:/code
command: bash -c "
cd src
&& python manage.py compilemessages
&& python manage.py collectstatic --clear --noinput
&& python manage.py migrate
&& uvicorn --reload app.asgi:application --host 0.0.0.0
"

View File

@ -0,0 +1,9 @@
services:
redis-someprojectone:
extends:
file: docker-compose.base.yml
service: redis
redis-someprojecttwo:
extends:
file: docker-compose.base.yml
service: redis

View File

@ -1,5 +1,3 @@
version: '3.6'
services: services:
sphinx: sphinx:
build: ./dockerfiles/sphinx build: ./dockerfiles/sphinx

View File

@ -1,61 +1,69 @@
version: '3.6'
services: services:
nginx: nginx:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: nginx service: nginx
php73: networks:
extends: default:
file: docker-compose.base.yml aliases:
service: php-fpm - someproject.local.wpstudio.ru
build: depends_on:
dockerfile: php73.Dockerfile - php74
- php81
php74: php74:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: php-fpm service: php
build: build:
dockerfile: php74.Dockerfile dockerfile: php74.Dockerfile
workspace73: php81:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: workspace service: php
build: build:
dockerfile: workspace73.Dockerfile dockerfile: php81.Dockerfile
php82:
extends:
file: docker-compose.base.yml
service: php
build:
dockerfile: php82.Dockerfile
php83:
extends:
file: docker-compose.base.yml
service: php
build:
dockerfile: php83.Dockerfile
workspace74: workspace74:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: workspace service: workspace
build: build:
dockerfile: workspace74.Dockerfile dockerfile: workspace74.Dockerfile
db: workspace81:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: db service: workspace
volumes: build:
- database:/var/lib/mysql dockerfile: workspace81.Dockerfile
- ./hostfiles:/hostfiles workspace82:
pma:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: pma service: workspace
redis: build:
dockerfile: workspace82.Dockerfile
workspace83:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: redis service: workspace
redis-salvoterra: build:
dockerfile: workspace83.Dockerfile
inbucket:
extends: extends:
file: docker-compose.base.yml file: docker-compose.base.yml
service: redis service: inbucket
restart: on-failure ports:
redis-allislam: - "82:9000"
extends:
file: docker-compose.base.yml
service: redis
volumes:
database:
secrets: secrets:
user_ssh_key: user_ssh_key:
@ -63,4 +71,5 @@ secrets:
user_known_hosts: user_known_hosts:
file: ~/.ssh/known_hosts file: ~/.ssh/known_hosts
composer_auth: composer_auth:
# If in your system installed Composer V1 use ~/.composer/auth.json
file: ~/.config/composer/auth.json file: ~/.config/composer/auth.json

View File

@ -0,0 +1,9 @@
FROM alpine:latest
# @see https://github.com/mcmar/docker-dnsmasq
RUN apk --no-cache add dnsmasq
EXPOSE 53/tcp 53/udp 67/udp
CMD ["dnsmasq", "-k"]

View File

@ -0,0 +1,3 @@
FROM docker.elastic.co/elasticsearch/elasticsearch:7.3.2
RUN elasticsearch-plugin install analysis-icu

View File

@ -0,0 +1,7 @@
FROM elasticsearch:7.5.2
COPY ./plugins /plugins
RUN elasticsearch-plugin install file:///plugins/analysis-icu-7.5.2.zip
RUN rm -rf /plugins

Binary file not shown.

View File

@ -1 +0,0 @@
RUN elasticsearch-plugin install analysis-icu

View File

@ -1,4 +0,0 @@
# syntax = edrevo/dockerfile-plus
FROM docker.elastic.co/elasticsearch/elasticsearch:7.3.2
INCLUDE+ ./elastic.base.Dockerfile

View File

@ -1,4 +0,0 @@
# syntax = edrevo/dockerfile-plus
FROM docker.elastic.co/elasticsearch/elasticsearch:7.5.2
INCLUDE+ ./elastic.base.Dockerfile

View File

@ -1,9 +0,0 @@
; Load igbinary extension
;extension=igbinary.so
; Use igbinary as session serializer
session.serialize_handler=igbinary
; Enable or disable compacting of duplicate strings
; The default is On.
igbinary.compact_strings=On

View File

@ -0,0 +1,93 @@
USER root
###########################################################################
# Set custom timezone if needed
###########################################################################
ARG CUSTOM_TZ=Etc/UTC
RUN if [ ${CUSTOM_TZ} -ne $(cat /etc/timezone) ]; then \
ln -snf /usr/share/zoneinfo/$CUSTOM_TZ /etc/localtime && \
echo $CUSTOM_TZ > /etc/timezone \
;fi
###########################################################################
# Set additional locale if needed:
###########################################################################
ARG CUSTOM_LOCALE=en_US.UTF-8
RUN if [ ${CUSTOM_LOCALE} -ne 'en_US.UTF-8' ]; then \
locale-gen ${CUSTOM_LOCALE} \
;fi
###########################################################################
# Pear Mail and Mail_Mime:
###########################################################################
USER root
ARG INSTALL_PEAR_MAIL=false
RUN if [ ${INSTALL_PEAR_MAIL} = true ]; then \
pear install Mail && pear install Mail_Mime \
;fi
###########################################################################
# Libreoffice
###########################################################################
USER root
ARG INSTALL_LIBREOFFICE=false
RUN if [ ${INSTALL_LIBREOFFICE} = true ]; then \
apt update -qq && \
apt-get install libreoffice-nogui -qq --no-install-recommends \
;fi
###########################################################################
# НУЦ:
###########################################################################
USER root
ARG INSTALL_NUC_CERTS=false
RUN if [ ${INSTALL_NUC_CERTS} = true ]; then \
mkdir /usr/local/share/ca-certificates/extra && \
cd /usr/local/share/ca-certificates/extra && \
curl -O https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt && \
curl -O https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt && \
update-ca-certificates \
;fi
###########################################################################
# Tune opts:
###########################################################################
USER root
ARG PHP_OPT_MEMORY_LIMIT=256M
RUN sed -i "s/^memory_limit = .*/memory_limit = $PHP_OPT_MEMORY_LIMIT/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_POST_MAX_SIZE=300M
RUN sed -i "s/^post_max_size = .*/post_max_size = $PHP_OPT_POST_MAX_SIZE/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_UPLOAD_MAX_FILESIZE=100M
RUN sed -i "s/^upload_max_filesize = .*/upload_max_filesize = $PHP_OPT_UPLOAD_MAX_FILESIZE/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_MAX_EXECUTION_TIME=600
RUN sed -i "s/^max_execution_time = .*/max_execution_time = $PHP_OPT_MAX_EXECUTION_TIME/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_SHORT_OPEN_TAG=Off
RUN sed -i "s/^short_open_tag = .*/short_open_tag = $PHP_OPT_SHORT_OPEN_TAG/g" "$PHP_INI_DIR/php.ini"
###########################################################################
# Cleanup
###########################################################################
USER root
# Clean up
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

View File

@ -1,52 +0,0 @@
FROM dimti/php:7.3
###########################################################################
# Redis and igbinary:
###########################################################################
ARG INSTALL_REDIS=false
COPY ./igbinary.ini /usr/local/etc/php/conf.d/igbinary.ini
RUN if [ ${INSTALL_REDIS} = true ]; then \
pecl install -a igbinary \
&& docker-php-ext-enable igbinary \
&& printf "yes\n" | pecl install redis \
&& docker-php-ext-enable redis \
;fi
###########################################################################
# Pear Mail and Mail_Mime:
###########################################################################
ARG INSTALL_PEAR_MAIL=false
RUN if [ ${INSTALL_PEAR_MAIL} = true ]; then \
pear install Mail && pear install Mail_Mime \
;fi
###########################################################################
# Tune opts:
###########################################################################
ARG PHP_OPT_SHORT_OPEN_TAG=Off
RUN sed -i "s/^short_open_tag = .*/short_open_tag = $PHP_OPT_SHORT_OPEN_TAG/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_MAX_EXECUTION_TIME=30
RUN sed -i "s/^max_execution_time = .*/max_execution_time = $PHP_OPT_MAX_EXECUTION_TIME/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_MEMORY_LIMIT=128M
RUN sed -i "s/^memory_limit = .*/memory_limit = $PHP_OPT_MEMORY_LIMIT/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_UPLOAD_MAX_FILESIZE=2M
RUN sed -i "s/^upload_max_filesize = .*/upload_max_filesize = $PHP_OPT_UPLOAD_MAX_FILESIZE/g" "$PHP_INI_DIR/php.ini"
###########################################################################
# Locales:
###########################################################################
RUN apt update && \
apt install -y locales && \
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen

View File

@ -1,52 +1,7 @@
# syntax = edrevo/dockerfile-plus
FROM dimti/php:7.4 FROM dimti/php:7.4
########################################################################### ARG PHP_VERSION=7.4
# Redis and igbinary: ENV PHP_VERSION ${PHP_VERSION}
###########################################################################
ARG INSTALL_REDIS=false INCLUDE+ ./php.base.Dockerfile
COPY ./igbinary.ini /usr/local/etc/php/conf.d/igbinary.ini
RUN if [ ${INSTALL_REDIS} = true ]; then \
pecl install -a igbinary \
&& docker-php-ext-enable igbinary \
&& printf "yes\n" | pecl install redis \
&& docker-php-ext-enable redis \
;fi
###########################################################################
# Pear Mail and Mail_Mime:
###########################################################################
ARG INSTALL_PEAR_MAIL=false
RUN if [ ${INSTALL_PEAR_MAIL} = true ]; then \
pear install Mail && pear install Mail_Mime \
;fi
###########################################################################
# Tune opts:
###########################################################################
ARG PHP_OPT_SHORT_OPEN_TAG=Off
RUN sed -i "s/^short_open_tag = .*/short_open_tag = $PHP_OPT_SHORT_OPEN_TAG/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_MAX_EXECUTION_TIME=30
RUN sed -i "s/^max_execution_time = .*/max_execution_time = $PHP_OPT_MAX_EXECUTION_TIME/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_MEMORY_LIMIT=128M
RUN sed -i "s/^memory_limit = .*/memory_limit = $PHP_OPT_MEMORY_LIMIT/g" "$PHP_INI_DIR/php.ini"
ARG PHP_OPT_UPLOAD_MAX_FILESIZE=2M
RUN sed -i "s/^upload_max_filesize = .*/upload_max_filesize = $PHP_OPT_UPLOAD_MAX_FILESIZE/g" "$PHP_INI_DIR/php.ini"
###########################################################################
# Locales:
###########################################################################
RUN apt update && \
apt install -y locales && \
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen

View File

@ -0,0 +1,7 @@
# syntax = edrevo/dockerfile-plus
FROM dimti/php:8.1
ARG PHP_VERSION=8.1
ENV PHP_VERSION ${PHP_VERSION}
INCLUDE+ ./php.base.Dockerfile

View File

@ -0,0 +1,7 @@
# syntax = edrevo/dockerfile-plus
FROM dimti/php:8.2
ARG PHP_VERSION=8.2
ENV PHP_VERSION ${PHP_VERSION}
INCLUDE+ ./php.base.Dockerfile

View File

@ -0,0 +1,7 @@
# syntax = edrevo/dockerfile-plus
FROM dimti/php:8.3
ARG PHP_VERSION=8.3
ENV PHP_VERSION ${PHP_VERSION}
INCLUDE+ ./php.base.Dockerfile

View File

@ -1,106 +0,0 @@
#! /bin/bash
# NOTE: At the moment, this has only been confirmed to work with PHP 7
PHP_VERSION=$2 # Without dot
# Grab full name of php-fpm container
PHP_FPM_CONTAINER=$(docker ps | grep php${PHP_VERSION} | awk '{print $1}')
if [[ -z "${PHP_FPM_CONTAINER}" ]]; then
echo "Unable to find php fpm container: php${PHP_VERSION}"
exit 1
fi
# Grab OS type
if [[ "$(uname)" == "Darwin" ]]; then
OS_TYPE="OSX"
else
OS_TYPE=$(expr substr $(uname -s) 1 5)
fi
xdebug_status ()
{
echo 'xDebug status'
# If running on Windows, need to prepend with winpty :(
if [[ $OS_TYPE == "MINGW" ]]; then
winpty docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v'
else
docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v'
fi
}
xdebug_start ()
{
echo 'Start xDebug'
# And uncomment line with xdebug extension, thus enabling it
ON_CMD="sed -i 's/^;zend_extension=/zend_extension=/g' \
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini"
# If running on Windows, need to prepend with winpty :(
if [[ $OS_TYPE == "MINGW" ]]; then
winpty docker exec -it $PHP_FPM_CONTAINER bash -c "${ON_CMD}"
docker restart $PHP_FPM_CONTAINER
winpty docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v'
else
docker exec -it $PHP_FPM_CONTAINER bash -c "${ON_CMD}"
docker restart $PHP_FPM_CONTAINER
docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v'
fi
}
xdebug_stop ()
{
echo 'Stop xDebug'
# Comment out xdebug extension line
OFF_CMD="sed -i 's/^zend_extension=/;zend_extension=/g' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini"
# If running on Windows, need to prepend with winpty :(
if [[ $OS_TYPE == "MINGW" ]]; then
# This is the equivalent of:
# winpty docker exec -it laradock_php-fpm_1 bash -c 'bla bla bla'
# Thanks to @michaelarnauts at https://github.com/docker/compose/issues/593
winpty docker exec -it $PHP_FPM_CONTAINER bash -c "${OFF_CMD}"
docker restart $PHP_FPM_CONTAINER
#docker-compose restart php-fpm
winpty docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v'
else
docker exec -it $PHP_FPM_CONTAINER bash -c "${OFF_CMD}"
# docker-compose restart php-fpm
docker restart $PHP_FPM_CONTAINER
docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v'
fi
}
case $1 in
stop|STOP)
xdebug_stop
;;
start|START)
xdebug_start
;;
status|STATUS)
xdebug_status
;;
*)
echo "xDebug [Stop | Start | Status] in the ${PHP_FPM_CONTAINER} container."
echo "xDebug must have already been installed."
echo "Usage:"
echo " .php-fpm/xdebug.sh 73|74 stop|start|status"
esac
exit 1

View File

@ -0,0 +1,5 @@
FROM keymetrics/pm2:18-buster
COPY ./ecosystem.config.js /ecosystem.config.js
CMD ["pm2-runtime", "start", "ecosystem.config.js"]

View File

@ -0,0 +1,11 @@
module.exports = {
apps: [
{
name: 'NuxtAppName',
port: '3000',
exec_mode: 'cluster',
instances: '2',
script: './.output/server/index.mjs',
},
],
};

View File

@ -0,0 +1,27 @@
ARG PYTHON_VERSION
FROM python:${PYTHON_VERSION}
ARG PUID=1000
ARG PGID=1000
RUN groupadd -g ${PGID} pydock && \
useradd -u ${PUID} -g pydock -m pydock && \
usermod -p "*" pydock -s /bin/bash
RUN mkdir /venv && chown ${PUID}:${PGID} /venv
USER pydock
# Создаём виртуальное окружение ВНЕ /app
RUN python -m venv /venv
ENV PATH="/venv/bin:$PATH"
WORKDIR /app
COPY requirements.txt .
VOLUME /pip_cache
RUN . /venv/bin/activate && pip install --cache-dir=/pip_cache -r requirements.txt
EXPOSE 8000

View File

@ -0,0 +1,2 @@
Как вы уже поняли, это файл должен лежать в корневой директории проекта,
так как нужно копировать от туда requirements.txt при сборке образа.

View File

@ -0,0 +1 @@
#* * * * * laradock /usr/bin/php /var/www/yourproject/artisan schedule:run >> /dev/null 2>&1

View File

@ -0,0 +1,2 @@
*
!.gitignore

View File

@ -1 +0,0 @@
#* * * * * laradock /usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1

View File

@ -1 +0,0 @@
#* * * * * laradock /usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1

View File

@ -1,12 +0,0 @@
{
"version": "10",
"aliases": {
"local": {
"url": "http://minio:9000",
"accessKey": "s3.local",
"secretKey": "qbKTLqAumjYOYlCXCRk6",
"api": "S3v4",
"path": "auto"
}
}
}

View File

@ -0,0 +1,304 @@
###########################################################################
# Set custom timezone if needed
###########################################################################
ARG CUSTOM_TZ=Etc/UTC
RUN if [ ${CUSTOM_TZ} -ne $(cat /etc/timezone) ]; then \
ln -snf /usr/share/zoneinfo/$CUSTOM_TZ /etc/localtime && \
echo $CUSTOM_TZ > /etc/timezone \
;fi
###########################################################################
# Set additional locale if needed:
###########################################################################
ARG CUSTOM_LOCALE=en_US.UTF-8
RUN if [ ${CUSTOM_LOCALE} -ne 'en_US.UTF-8' ]; then \
locale-gen ${CUSTOM_LOCALE} \
;fi
###########################################################################
# Laradock non-root user:
###########################################################################
ARG CUSTOM_PUID=1000
ARG CUSTOM_PGID=1000
RUN if [ ${CUSTOM_PUID} -nq 1000 ]; then \
usermod -u ${CUSTOM_PUID} laradock \
;fi
RUN if [ ${CUSTOM_PGID} -nq 1000 ]; then \
groupmod -g ${CUSTOM_PGID} laradock \
chown -R :${CUSTOM_PGID} /home/laradock \
;fi
###########################################################################
# Update composer version if needed
###########################################################################
USER root
ARG COMPOSER_VERSION=2
RUN set -e; if [ ${COMPOSER_VERSION} -ne 2 ]; then \
composer self-update --${COMPOSER_VERSION}; \
mkdir -p ${HOME}/.composer; \
ln -s /run/secrets/composer_auth ${HOME}/.composer/auth.json; \
else \
mkdir -p ${HOME}/.config/composer; \
ln -s /run/secrets/composer_auth ${HOME}/.config/composer/auth.json; \
fi
###########################################################################
# WP CLI:
###########################################################################
# The command line interface for WordPress
USER root
ARG INSTALL_WP_CLI=false
RUN if [ ${INSTALL_WP_CLI} = true ]; then \
curl -fsSL -o /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar | bash && \
chmod +x /usr/local/bin/wp \
;fi
###########################################################################
# Pear Mail and Mail_Mime:
###########################################################################
ARG INSTALL_PEAR_MAIL=false
RUN if [ ${INSTALL_PEAR_MAIL} = true ]; then \
pear install Mail && pear install Mail_Mime \
;fi
###########################################################################
# Node / NVM:
###########################################################################
ARG INSTALL_NODE=false
ARG NODE_VERSION=v18.18.0
ENV NODE_VERSION ${NODE_VERSION}
USER laradock
ENV NVM_DIR /home/laradock/.nvm
RUN if [ ${INSTALL_NODE} = true ]; then \
mkdir -p $NVM_DIR && \
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash \
&& . $NVM_DIR/nvm.sh \
;fi
# Wouldn't execute when added to the RUN statement in the above block
# Source NVM when loading bash since ~/.profile isn't loaded on non-login shell
RUN if [ ${INSTALL_NODE} = true ]; then \
echo "" >> ~/.bashrc && \
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \
;fi
# Add NVM binaries to root's .bashrc
USER root
RUN if [ ${INSTALL_NODE} = true ]; then \
cp -R /home/laradock/.nvm /root/ && \
chown -R root:root /root/.nvm && \
echo "" >> ~/.bashrc && \
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \
;fi
USER root
RUN if [ ${INSTALL_NODE} = true ]; then \
. ~/.bashrc && nvm install ${NODE_VERSION} \
&& . ~/.bashrc && nvm alias default ${NODE_VERSION} \
&& npm i -g yarn \
&& cp -R ~/.nvm/alias /home/laradock/.nvm \
&& cp -R ~/.nvm/versions /home/laradock/.nvm \
&& chown -R ${CUSTOM_PUID}:${CUSTOM_PGID} /home/laradock/.nvm \
;fi
###########################################################################
# ssh:
###########################################################################
USER root
ARG INSTALL_SSH=false
ENV INSTALL_SSH ${INSTALL_SSH}
RUN if [ ${INSTALL_SSH} = true ]; then \
rm -f /etc/service/sshd/down \
;fi
USER laradock
RUN if [ ${INSTALL_SSH} = true ]; then \
mkdir -p ~/.ssh \
&& ln -s /run/secrets/user_ssh_key ~/.ssh/id_rsa \
&& ln -s /run/secrets/user_known_hosts ~/.ssh/known_hosts \
;fi
###########################################################################
# APT
###########################################################################
USER root
# once please
RUN apt update -qq
###########################################################################
# YADM
###########################################################################
ARG INSTALL_YADM=true
USER root
RUN if [ ${INSTALL_YADM} = true ]; then \
apt-get install direnv yadm tmux -qq && \
curl -sS https://starship.rs/install.sh | sh -s -- -f && \
yadm clone --bootstrap https://vcs.wpstudio.ru/gitea/dotfiles.git \
;fi
USER laradock
RUN if [ ${INSTALL_YADM} = true ]; then \
yadm clone --bootstrap https://vcs.wpstudio.ru/gitea/dotfiles.git && \
sed -i 's/#/\\$/g' ${HOME}/.config/starship.toml \
;fi
###########################################################################
# FINE UTILS:
###########################################################################
USER root
ARG INSTALL_FINE_UTILS=false
RUN if [ ${INSTALL_FINE_UTILS} = true ]; then \
apt-get install htop wget unzip curl grep dbview -qq \
;fi
###########################################################################
# SUPERVISOR:
###########################################################################
USER root
ARG INSTALL_SUPERVISOR=false
RUN if [ ${INSTALL_SUPERVISOR} = true ]; then \
apt-get install supervisor -qq \
;fi
###########################################################################
# PYTHON & UVICORN:
###########################################################################
USER root
ARG INSTALL_PYTHON=false
RUN if [ ${INSTALL_PYTHON} = true ]; then \
apt-get install liblzma-dev libbz2-dev libffi-dev libreadline-dev zlib1g-dev -qq --no-install-recommends \
;fi
USER laradock
SHELL ["/bin/bash", "-c"]
ARG PYTHON_VERSION=3.12
ENV PYENV_VERSION=${PYTHON_VERSION}
RUN if [ ${INSTALL_PYTHON} = true ]; then \
set -e; \
curl https://pyenv.run | bash &&\
echo '' >> ~/.shell-env.local && \
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.shell-env.local && \
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.shell-env.local && \
echo 'eval "$(pyenv init -)"' >> ~/.shell-env.local && \
echo '' >> ~/.shell-env.local && \
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.shell-env.local && \
echo '' >> ~/.shell-env.local && \
$HOME/.pyenv/bin/pyenv install ${PYTHON_VERSION} \
;fi
RUN if [ ${INSTALL_PYTHON} = true ]; then \
bash -ic 'python -m pip install uvicorn' \
;fi
RUN if [ false = true ]; then \
python -m pip install uvicorn && \
python -m pip install --upgrade supervisor && \
echo_supervisord_conf > /etc/supervisord.conf && \
sed -i 's/\;\[include\]/\[include\]/g' /etc/supervisord.conf && \
sed -i 's/\;files\s.*/files = supervisord.d\/*.conf/g' /etc/supervisord.conf \
;fi
SHELL ["/bin/sh", "-c"]
###########################################################################
# Libreoffice
###########################################################################
USER root
ARG INSTALL_LIBREOFFICE=false
RUN if [ ${INSTALL_LIBREOFFICE} = true ]; then \
add-apt-repository -y ppa:libreoffice/ppa \
&& apt update -qq \
&& apt-get install libreoffice-nogui -qq --no-install-recommends \
;fi
###########################################################################
# НУЦ:
###########################################################################
USER root
ARG INSTALL_NUC_CERTS=false
RUN if [ ${INSTALL_NUC_CERTS} = true ]; then \
mkdir /usr/local/share/ca-certificates/extra && \
cd /usr/local/share/ca-certificates/extra && \
curl -O https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt && \
curl -O https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt && \
update-ca-certificates \
;fi
###########################################################################
# Tune opts:
###########################################################################
USER root
ARG PHP_OPT_MEMORY_LIMIT=256M
RUN sed -i "s/^memory_limit = .*/memory_limit = $PHP_OPT_MEMORY_LIMIT/g" /etc/php/${PHP_VERSION}/cli/php.ini
ARG PHP_OPT_SHORT_OPEN_TAG=Off
RUN sed -i "s/^short_open_tag = .*/short_open_tag = $PHP_OPT_SHORT_OPEN_TAG/g" /etc/php/${PHP_VERSION}/cli/php.ini
###########################################################################
# Cleanup & Crontab
###########################################################################
USER root
# Clean up
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY ./crontab/* /etc/cron.d/
RUN chmod -R 644 /etc/cron.d
#ENTRYPOINT ["/bin/bash","-c","service supervisor start"]

Some files were not shown because too many files have changed in this diff Show More