diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml new file mode 100644 index 0000000..ef8f87c --- /dev/null +++ b/nextcloud/docker-compose.yml @@ -0,0 +1,72 @@ +services: + nextcloud_db: + image: docker.io/library/postgres:17.5 + container_name: nextcloud_db + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + volumes: + - ${APPDATA_PATH}/nextcloud/db:/var/lib/postgresql/data + ports: + - ${DB_PORT}:5432 + networks: + - backend + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"] + start_period: 10s + interval: 10s + timeout: 5s + retries: 3 + + nextcloud_valkey: + image: docker.io/valkey/valkey:8.1.2 + container_name: nextcloud_valkey + command: valkey-server --save 60 1 --loglevel warning --requirepass ${VALKEY_PASSWORD} + volumes: + - ${APPDATA_PATH}/nextcloud/valkey:/data + ports: + - ${VALKEY_PORT}:6379 + networks: + - backend + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "echo 'auth ${VALKEY_PASSWORD}\nping' | valkey-cli | grep PONG"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + + nextcloud_app: + image: docker.io/library/nextcloud:31.0.6 + container_name: nextcloud_app + depends_on: + nextcloud_db: + condition: service_healthy + nextcloud_valkey: + condition: service_healthy + environment: + - POSTGRES_HOST=nextcloud_db:5432 + - POSTGRES_DB=${POSTGRES_DB} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - REDIS_HOST=nextcloud_valkey + - REDIS_HOST_PORT=6379 + - REDIS_HOST_PASSWORD=${VALKEY_PASSWORD} + - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} + - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} + volumes: + - ${APPDATA_PATH}/nextcloud/app:/var/www/html + ports: + - ${APP_PORT}:80 + networks: + - frontend + - backend + restart: unless-stopped + +networks: + frontend: + external: true + backend: + external: true