services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_PASSWORD=supersecretpassword
- MYSQL_DATABASE=nextclouddb
- MYSQL_USER=nextclouduser
- MYSQL_RANDOM_ROOT_PASSWORD='yes'
redis:
image: redis
restart: always
command: redis-server --requirepass supersecretpassword2
app:
image: nextcloud:27
restart: always
ports:
- 8080:80
links:
- db
- redis
volumes:
- ./html:/var/www/html
environment:
- MYSQL_PASSWORD=supersecretpassword
- MYSQL_DATABASE=nextclouddb
- MYSQL_USER=nextclouduser
- MYSQL_HOST=db
- REDIS_HOST_PASSWORD=supersecretpassword2
depends_on:
- db
- redis
cron:
image: nextcloud:27
restart: always
volumes:
- ./html:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
Not OP but I’m doing almost the same thing in Kubernetes. Basically you start a Nextcloud container but only to run the cronjob, not Nextcloud itself. In my case, Kubernetes creates a new container for each cron execution. Apparently there’s also a cron.sh script already bundled with the Nextcloud image, that can run continously. At least OP doesn’t seem to mount the script from somewhere else.