services: db: image: mariadb:latest container_name: seafile_database environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_LOG_CONSOLE=true - MARIADB_AUTO_UPGRADE=1 volumes: - "${MYSQL_DATA_VOLUME:-/opt/seafile-mysql/db}:/var/lib/mysql" networks: - seafile-net healthcheck: test: [ "CMD", "/usr/local/bin/healthcheck.sh", "--connect", "--mariadbupgrade", "--innodb_initialized", ] interval: 20s start_period: 30s timeout: 5s retries: 10 restart: unless-stopped memcached: image: memcached container_name: seafile_memcached entrypoint: memcached -m 256 restart: unless-stopped networks: - seafile-net seafile: image: seafileltd/seafile-mc:12.0-latest container_name: seafile_server ports: - "80:80" volumes: - ${SEAFILE_DATA_VOLUME:-/opt/seafile-data}:/shared environment: - SITE_ROOT=/ - DB_HOST=db - DB_PORT=3306 - DB_USER=seafile - DB_ROOT_PASSWD=${MYSQL_ROOT_PASSWORD} - DB_PASSWORD=${SEAFILE_DB_PASSWORD} - TIME_ZONE=${TIME_ZONE:-Etc/UTC} - INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL} - INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD} - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME} - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY} - SEAFILE_LOG_TO_STDOUT=true - SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL} depends_on: db: condition: service_healthy memcached: condition: service_started restart: unless-stopped networks: - seafile-net healthcheck: test: ["CMD", "curl", "-fs", "http://localhost/"] interval: 5s timeout: 3s start_period: 5s networks: seafile-net: name: seafile-net