Browse Source

feat(api): use memcached for caching

Peter Thomassen 5 years ago
parent
commit
bb13105e48
6 changed files with 29 additions and 0 deletions
  1. 1 0
      api/Dockerfile
  2. 7 0
      api/api/settings.py
  3. 1 0
      api/requirements.txt
  4. 4 0
      docker-compose.dev.yml
  5. 4 0
      docker-compose.test-e2e.yml
  6. 12 0
      docker-compose.yml

+ 1 - 0
api/Dockerfile

@@ -4,6 +4,7 @@ RUN apt-get update && apt-get install -y \
 		gcc \
 		gettext \
 		default-mysql-client default-libmysqlclient-dev \
+		libmemcached-dev \
 		postgresql-client libpq-dev \
 		sqlite3 \
 		cron \

+ 7 - 0
api/api/settings.py

@@ -76,6 +76,13 @@ DATABASES = {
 
 }
 
+CACHES = {
+    'default': {
+        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
+        'LOCATION': 'memcached:11211',
+    }
+}
+
 # This is necessary because the default is America/Chicago
 TIME_ZONE = 'UTC'
 

+ 1 - 0
api/requirements.txt

@@ -9,5 +9,6 @@ django-celery-email~=3.0.0
 httpretty~=0.9.0
 mysqlclient~=1.4.0
 psl-dns~=1.0
+pylibmc~=1.6.1
 requests~=2.22.0
 uwsgi~=2.0.0

+ 4 - 0
docker-compose.dev.yml

@@ -53,6 +53,10 @@ services:
     logging:
       driver: "json-file"
 
+  memcached:
+    logging:
+      driver: "json-file"
+
   webapp:
     volumes:
     - ./webapp/:/usr/src/app/

+ 4 - 0
docker-compose.test-e2e.yml

@@ -27,6 +27,10 @@ services:
     logging:
       driver: "json-file"
 
+  memcached:
+    logging:
+      driver: "json-file"
+
   test-e2e:
     build: test/e2e
     restart: "no"

+ 12 - 0
docker-compose.yml

@@ -92,6 +92,7 @@ services:
     - dbapi
     - nslord
     - celery
+    - memcached
     environment:
     - DESECSTACK_DOMAIN
     - DESECSTACK_NS
@@ -234,6 +235,17 @@ services:
         tag: "desec/celery"
     restart: unless-stopped
 
+  memcached:
+    image: memcached:1.5-alpine
+    init: true
+    networks:
+    - rearapi_celery
+    logging:
+      driver: "syslog"
+      options:
+        tag: "desec/memcached"
+    restart: unless-stopped
+
 
 volumes:
   dbapi_mysql: