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
First time I’m seeing cron as a separate service. That’s fascinating! I had to add cronjob to the host machine to get that to work. Can you explain more how that works? It kind of looks like you’re running two nextcloud containers? I could be mistaken.
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.
Yes, one runs the crown service and the other is the main service. All cron.sh does is sleep and then run the cron service repeatedly