diff --git a/conf/config.dev b/conf/config.dev index fc3bde91..566b655e 100644 --- a/conf/config.dev +++ b/conf/config.dev @@ -28,6 +28,10 @@ enable-maintenance = 0 localedir = YOUR_AUR_ROOT/web/locale ; In production, salt_rounds should be higher; suggested: 12. salt_rounds = 4 +cache = none +; In docker, the memcached host is available. On a user's system, +; this should be set to localhost (most likely). +memcache_servers = memcached:11211 [notifications] ; For development/testing, use /usr/bin/sendmail diff --git a/docker-compose.yml b/docker-compose.yml index 3500b8e9..56eff570 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,6 +29,13 @@ services: volumes: - ./cache:/cache + memcached: + image: aurweb:latest + init: true + command: /docker/scripts/run-memcached.sh + healthcheck: + test: "bash /docker/health/memcached.sh" + mariadb: image: aurweb:latest init: true @@ -136,6 +143,8 @@ services: condition: service_healthy mariadb: condition: service_healthy + memcached: + condition: service_healthy volumes: - mariadb_run:/var/run/mysqld # Bind socket in this volume. - mariadb_data:/var/lib/mysql diff --git a/docker/health/memcached.sh b/docker/health/memcached.sh new file mode 100755 index 00000000..00f8cd98 --- /dev/null +++ b/docker/health/memcached.sh @@ -0,0 +1,2 @@ +#!/bin/bash +exec pgrep memcached diff --git a/docker/php-entrypoint.sh b/docker/php-entrypoint.sh index b4f6c631..1f3ed82b 100755 --- a/docker/php-entrypoint.sh +++ b/docker/php-entrypoint.sh @@ -7,6 +7,9 @@ bash $dir/test-mysql-entrypoint.sh sed -ri "s;^(aur_location) = .+;\1 = https://localhost:8443;" conf/config sed -ri 's/^(name) = .+/\1 = aurweb/' conf/config +# Enable memcached. +sed -ri 's/^(cache) = .+$/\1 = memcache/' conf/config + sed -ri "s|^(git_clone_uri_anon) = .+|\1 = https://localhost:8443/%s.git|" conf/config.defaults sed -ri "s|^(git_clone_uri_priv) = .+|\1 = ssh://aur@localhost:2222/%s.git|" conf/config.defaults @@ -21,6 +24,9 @@ sed -ri 's|^;?(access\.log) = .*$|\1 = /proc/self/fd/2|g' \ sed -ri 's/^;?(extension=pdo_mysql)/\1/' /etc/php/php.ini sed -ri 's/^;?(open_basedir).*$/\1 = \//' /etc/php/php.ini +# Use the sqlite3 extension line for memcached. +sed -ri 's/^;(extension)=sqlite3$/\1=memcached/' /etc/php/php.ini + python -m aurweb.initdb 2>/dev/null || /bin/true exec "$@" diff --git a/docker/scripts/install-deps.sh b/docker/scripts/install-deps.sh index 8d4525de..6edbff5a 100755 --- a/docker/scripts/install-deps.sh +++ b/docker/scripts/install-deps.sh @@ -14,6 +14,6 @@ pacman -Syu --noconfirm --noprogressbar \ python-pytest-asyncio python-coverage hypercorn python-bcrypt \ python-email-validator openssh python-lxml mariadb mariadb-libs \ python-isort flake8 cgit uwsgi uwsgi-plugin-cgi php php-fpm \ - python-asgiref uvicorn python-feedgen + python-asgiref uvicorn python-feedgen memcached php-memcached exec "$@" diff --git a/docker/scripts/run-memcached.sh b/docker/scripts/run-memcached.sh new file mode 100755 index 00000000..90784b0f --- /dev/null +++ b/docker/scripts/run-memcached.sh @@ -0,0 +1,2 @@ +#!/bin/bash +exec /usr/bin/memcached -u memcached -m 64 -c 1024 -l 0.0.0.0