From c290f84906a206fbd19bab4a0c5b093211be9406 Mon Sep 17 00:00:00 2001 From: Nicolas Guerrier Date: Wed, 17 Mar 2021 10:59:12 +0100 Subject: [PATCH 1/3] Auto-set shm size based on host available ram --- .env.default | 1 + Makefile | 4 ++++ docker/docker-compose.override.yml.default | 1 + 3 files changed, 6 insertions(+) diff --git a/.env.default b/.env.default index 08fd11a57..07c38cbc8 100644 --- a/.env.default +++ b/.env.default @@ -32,3 +32,4 @@ DB_DATA_DIR=../.cache REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWD=1234567890 +SHM_SIZE=2G diff --git a/Makefile b/Makefile index 7ed9cdde0..c67f3988e 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,9 @@ LOCAL_GID := $(shell id -g) CUID ?= $(LOCAL_UID) CGID ?= $(LOCAL_GID) +# Define shm size based on total ram on host ([Total ram on host, in kilobytes] / 4) +SHM_SIZE = $(shell expr $(shell cat /proc/meminfo | head -1 | awk '{print $$2}') \* 256) + # Define network name. COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front @@ -50,6 +53,7 @@ allfast: | fast provision back front si localize hooksymlink info ## Update .env to build DB in ram (makes data NOT persistant) fast: + $(shell sed -i "s|^SHM_SIZE=2G|SHM_SIZE=$(SHM_SIZE)|g" .env) $(shell sed -i "s|^#DB_URL=sqlite:///dev/shm/d8.sqlite|DB_URL=sqlite:///dev/shm/d8.sqlite|g" .env) $(shell sed -i "s|^DB_URL=sqlite:./../.cache/d8.sqlite|#DB_URL=sqlite:./../.cache/d8.sqlite|g" .env) diff --git a/docker/docker-compose.override.yml.default b/docker/docker-compose.override.yml.default index 83fa94528..6566934c6 100644 --- a/docker/docker-compose.override.yml.default +++ b/docker/docker-compose.override.yml.default @@ -25,6 +25,7 @@ services: # NEW_RELIC_APPNAME: "${COMPOSE_PROJECT_NAME}" volumes: - "./90-mail.ini:/etc/php7/conf.d/90-mail.ini:z" + shm_size: "${SHM_SIZE}" # depends_on: # - mysql # - postgresql From c4640454b0078a65e38edb0b2105707ab3141422 Mon Sep 17 00:00:00 2001 From: Nicolas Guerrier Date: Wed, 17 Mar 2021 11:21:47 +0100 Subject: [PATCH 2/3] Setting sane default to shm_size when not used --- .env.default | 2 +- Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.default b/.env.default index 07c38cbc8..63e347783 100644 --- a/.env.default +++ b/.env.default @@ -32,4 +32,4 @@ DB_DATA_DIR=../.cache REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWD=1234567890 -SHM_SIZE=2G +SHM_SIZE=64m diff --git a/Makefile b/Makefile index c67f3988e..012b2ea8c 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ allfast: | fast provision back front si localize hooksymlink info ## Update .env to build DB in ram (makes data NOT persistant) fast: - $(shell sed -i "s|^SHM_SIZE=2G|SHM_SIZE=$(SHM_SIZE)|g" .env) + $(shell sed -i "s|^SHM_SIZE=64m|SHM_SIZE=$(SHM_SIZE)|g" .env) $(shell sed -i "s|^#DB_URL=sqlite:///dev/shm/d8.sqlite|DB_URL=sqlite:///dev/shm/d8.sqlite|g" .env) $(shell sed -i "s|^DB_URL=sqlite:./../.cache/d8.sqlite|#DB_URL=sqlite:./../.cache/d8.sqlite|g" .env) From 38c73c3055156f92f28f8ba1fb8e91e86933f02a Mon Sep 17 00:00:00 2001 From: Nicolas Guerrier Date: Wed, 17 Mar 2021 11:28:15 +0100 Subject: [PATCH 3/3] Updating readme --- README.md | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 7dd6fd339..58ca50f87 100644 --- a/README.md +++ b/README.md @@ -48,29 +48,30 @@ #### Used variables -| Variable name | Description | Default value | -| --------------- | ----------------------- | ------------- | -| COMPOSE_FILE | Path to a Compose file(s) | `./docker/docker-compose.yml:./docker/docker-compose.override.yml` | -| COMPOSE_PROJECT_NAME | Your project name | - | -| PROFILE_NAME | Profile used for site install | sdd | -| MODULES | Additional modules to enable after site install | project_default_content | -| THEME_NAME | Name of theme directory in /web/themes | `NA` | -| SITE_NAME | Site name | Example | -| SITE_MAIL | Site e-mail address | admin@example.com | -| ADMIN_NAME | Admin username | admin | -| ADMIN_PW | Admin password | admin | -| ADMIN_MAIL | Admin e-mail address | admin@example.com | -| PROJECT_INSTALL | Way to install site - from straight or existing config | - | -| IMAGE_PHP | Php image to use | `skilldlabs/php:72-fpm` | -| IMAGE_NGINX | Image to use for nginx container | `skilldlabs/nginx:1.14.1` | -| IMAGE_APACHE | Image to use for apache container | `skilldlabs/skilld-docker-apache` | -| IMAGE_FRONT | Image to use for front tasks | `skilldlabs/frontend:zen` | -| IMAGE_DRIVER | Image to use for automated testing webdriver | `zenika/alpine-chrome` | -| ADD_PHP_EXT | Additional php extension to install | - | -| MAIN_DOMAIN_NAME | Domain name used for traefik | `docker.localhost` | -| DB_URL | Url to connect to database | `sqlite:///dev/shm/d8.sqlite` | -| DB_DATA_DIR | Full path to database storage | `/dev/shm` | -| CLEAR_FRONT_PACKAGES | Set it to `no` to keep `/node_nodules` directory in theme after `make front` task to save build time. | yes | +| Variable name | Description | Default value | +| --------------- | ----------------------- | ------------- | +| COMPOSE_FILE | Path to a Compose file(s) | `./docker/docker-compose.yml:./docker/docker-compose.override.yml` | +| COMPOSE_PROJECT_NAME | Your project name | - | +| PROFILE_NAME | Profile used for site install | sdd | +| MODULES | Additional modules to enable after site install | project_default_content | +| THEME_NAME | Name of theme directory in /web/themes | `NA` | +| SITE_NAME | Site name | Example | +| SITE_MAIL | Site e-mail address | admin@example.com | +| ADMIN_NAME | Admin username | admin | +| ADMIN_PW | Admin password | admin | +| ADMIN_MAIL | Admin e-mail address | admin@example.com | +| PROJECT_INSTALL | Way to install site - from straight or existing config | - | +| IMAGE_PHP | Php image to use | `skilldlabs/php:72-fpm` | +| IMAGE_NGINX | Image to use for nginx container | `skilldlabs/nginx:1.14.1` | +| IMAGE_APACHE | Image to use for apache container | `skilldlabs/skilld-docker-apache` | +| IMAGE_FRONT | Image to use for front tasks | `skilldlabs/frontend:zen` | +| IMAGE_DRIVER | Image to use for automated testing webdriver | `zenika/alpine-chrome` | +| ADD_PHP_EXT | Additional php extension to install | - | +| MAIN_DOMAIN_NAME | Domain name used for traefik | `docker.localhost` | +| DB_URL | Url to connect to database | `sqlite:///dev/shm/d8.sqlite` | +| DB_DATA_DIR | Full path to database storage | `/dev/shm` | +| CLEAR_FRONT_PACKAGES | Set it to `no` to keep `/node_nodules` directory in theme after `make front` task to save build time. | yes | +| SHM_SIZE | Defines php container shm_size, used when building in "fast" mode. | `total host ram / 4` when fast is used, otherwise defaults to 64m | #### Persistent Mysql