From c6100803e10a7dd082927c6c1479c647ae1e2930 Mon Sep 17 00:00:00 2001 From: EHJ-52n Date: Thu, 17 Feb 2022 11:30:10 +0100 Subject: [PATCH] Add own service for memcached Goal: one service per container - add own service for memcached - remove memcached from geonode image - add MEMCACHED_OPTIONS variable to env files - enable memcached by default --- .env | 12 ++++++++---- .env_dev | 8 ++++++-- .env_local | 8 ++++++-- .env_test | 8 ++++++-- Dockerfile | 2 -- docker-compose-test.yml | 13 +++++++++++++ docker-compose.yml | 13 +++++++++++++ entrypoint.sh | 1 - 8 files changed, 52 insertions(+), 13 deletions(-) diff --git a/.env b/.env index 1caf6d82399..608975c543f 100644 --- a/.env +++ b/.env @@ -166,11 +166,15 @@ GEOIP_PATH=/mnt/volumes/statics/geoip.db CACHE_BUSTING_STATIC_ENABLED=False -MEMCACHED_ENABLED=False +MEMCACHED_ENABLED=True MEMCACHED_BACKEND=django.core.cache.backends.memcached.MemcachedCache -MEMCACHED_LOCATION=127.0.0.1:11211 +MEMCACHED_LOCATION=memcached:11211 MEMCACHED_LOCK_EXPIRE=3600 MEMCACHED_LOCK_TIMEOUT=10 +# +# Options for memcached binary, e.g. -vvv to log all requests and cache hits +# +MEMCACHED_OPTIONS= MAX_DOCUMENT_SIZE=2 CLIENT_RESULTS_LIMIT=5 @@ -213,9 +217,9 @@ LDAP_GROUP_PROFILE_MEMBER_ATTR=uniqueMember # expressed in KB # CELERY__MAX_MEMORY_PER_CHILD="200000" -# ## +# ## # Note right autoscale value must coincide with worker concurrency value -# CELERY__AUTOSCALE_VALUES="1,4" +# CELERY__AUTOSCALE_VALUES="1,4" # CELERY__WORKER_CONCURRENCY="4" # ## # CELERY__OPTS="--without-gossip --without-mingle -Ofair -B -E" diff --git a/.env_dev b/.env_dev index d6847b18685..67cc89b1d96 100644 --- a/.env_dev +++ b/.env_dev @@ -160,11 +160,15 @@ SECRET_KEY='myv-y4#7j-d*p-__@j#*3z@!y24fz8%^z2v6atuy4bo9vqr1_a' CACHE_BUSTING_STATIC_ENABLED=False -MEMCACHED_ENABLED=False +MEMCACHED_ENABLED=True MEMCACHED_BACKEND=django.core.cache.backends.memcached.MemcachedCache -MEMCACHED_LOCATION=127.0.0.1:11211 +MEMCACHED_LOCATION=memcached:11211 MEMCACHED_LOCK_EXPIRE=3600 MEMCACHED_LOCK_TIMEOUT=10 +# +# Options for memcached binary, e.g. -vvv to log all requests and cache hits +# +MEMCACHED_OPTIONS= MAX_DOCUMENT_SIZE=2 CLIENT_RESULTS_LIMIT=5 diff --git a/.env_local b/.env_local index a98ff9c65ae..5b51a530011 100644 --- a/.env_local +++ b/.env_local @@ -160,11 +160,15 @@ SECRET_KEY='myv-y4#7j-d*p-__@j#*3z@!y24fz8%^z2v6atuy4bo9vqr1_a' CACHE_BUSTING_STATIC_ENABLED=False -MEMCACHED_ENABLED=False +MEMCACHED_ENABLED=True MEMCACHED_BACKEND=django.core.cache.backends.memcached.MemcachedCache -MEMCACHED_LOCATION=127.0.0.1:11211 +MEMCACHED_LOCATION=memcached:11211 MEMCACHED_LOCK_EXPIRE=3600 MEMCACHED_LOCK_TIMEOUT=10 +# +# Options for memcached binary, e.g. -vvv to log all requests and cache hits +# +MEMCACHED_OPTIONS= MAX_DOCUMENT_SIZE=2 CLIENT_RESULTS_LIMIT=5 diff --git a/.env_test b/.env_test index 2115e3a317a..2d405410fa5 100644 --- a/.env_test +++ b/.env_test @@ -160,11 +160,15 @@ GEOIP_PATH=/mnt/volumes/statics/geoip.db CACHE_BUSTING_STATIC_ENABLED=False -MEMCACHED_ENABLED=False +MEMCACHED_ENABLED=True MEMCACHED_BACKEND=django.core.cache.backends.memcached.MemcachedCache -MEMCACHED_LOCATION=127.0.0.1:11211 +MEMCACHED_LOCATION=memcached:11211 MEMCACHED_LOCK_EXPIRE=3600 MEMCACHED_LOCK_TIMEOUT=10 +# +# Options for memcached binary, e.g. -vvv to log all requests and cache hits +# +MEMCACHED_OPTIONS= MAX_DOCUMENT_SIZE=2 CLIENT_RESULTS_LIMIT=5 diff --git a/Dockerfile b/Dockerfile index 6e80deb9329..472fe9c2508 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,8 +38,6 @@ RUN pip install pip --upgrade \ && pip install pygdal==$(gdal-config --version).* \ flower==0.9.4 -# Activate "memcached" -RUN apt install -y memcached RUN pip install pylibmc \ && pip install sherlock diff --git a/docker-compose-test.yml b/docker-compose-test.yml index 4312d174863..58b125bc12e 100644 --- a/docker-compose-test.yml +++ b/docker-compose-test.yml @@ -69,6 +69,19 @@ services: - statics:/mnt/volumes/statics restart: on-failure + # memcached service + memcached: + image: memcached:alpine + container_name: memcached4${COMPOSE_PROJECT_NAME} + command: memcached ${MEMCACHED_OPTIONS} + restart: on-failure + healthcheck: + test: nc -z 127.0.0.1 11211 + interval: 30s + timeout: 30s + retries: 5 + start_period: 30s + # Gets and installs letsencrypt certificates letsencrypt: image: geonode/spcgeonode:letsencrypt-3.1 diff --git a/docker-compose.yml b/docker-compose.yml index d747531c711..7d91486db44 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -47,6 +47,19 @@ services: entrypoint: ["/usr/src/geonode/entrypoint.sh"] command: "celery-cmd" + # memcached service + memcached: + image: memcached:alpine + container_name: memcached4${COMPOSE_PROJECT_NAME} + command: memcached ${MEMCACHED_OPTIONS} + restart: on-failure + healthcheck: + test: nc -z 127.0.0.1 11211 + interval: 30s + timeout: 30s + retries: 5 + start_period: 30s + # Nginx is serving django static and media files and proxies to django and geonode geonode: image: geonode/nginx:3.x diff --git a/entrypoint.sh b/entrypoint.sh index 4e394cdc703..30e506ccec5 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -16,7 +16,6 @@ invoke () { # Start cron && memcached services service cron restart -service memcached restart echo $"\n\n\n" echo "-----------------------------------------------------"