Files
flook-stacks/stacks/seafile/docker-compose.yml
2025-12-29 17:55:42 -05:00

164 lines
4.6 KiB
YAML

networks:
seafile-net:
name: seafile-net
driver: bridge
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- /mnt/user/appdata/seafile/db-data:/var/lib/mysql
networks:
- seafile-net
healthcheck:
test: ["CMD", "sh", "-c", "mysqladmin ping -h localhost -u root -p$$MYSQL_ROOT_PASSWORD"]
interval: 20s
start_period: 30s
timeout: 5s
retries: 10
redis:
image: redis:latest
container_name: seafile-redis
restart: unless-stopped
networks:
- seafile-net
seafile:
image: seafileltd/seafile-pro-mc:13.0.6-testing
container_name: seafile
restart: unless-stopped
ports:
- 8098:80
environment:
- SEAFILE_MYSQL_DB_HOST=db
- SEAFILE_MYSQL_DB_PORT=3306
- SEAFILE_MYSQL_DB_USER=seafile
- SEAFILE_MYSQL_DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD}
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
- TIME_ZONE=Etc/UTC
- SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME}
- SEAFILE_SERVER_PROTOCOL=https
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY}
- ENABLE_SEADOC=true
- SEADOC_SERVER_URL=https://${SEAFILE_SERVER_HOSTNAME}/sdoc-server
- CACHE_PROVIDER=redis
- REDIS_HOST=redis
- REDIS_PORT=6379
- INNER_NOTIFICATION_SERVER_URL=http://notification-server:8083
- NOTIFICATION_SERVER_URL=${NOTIFICATION_SERVER_URL}
volumes:
- /mnt/user/appdata/seafile/data:/shared
- /mnt/user/appdata/seafile/seahub_settings.py:/shared/seafile/conf/seahub_settings.py
- /mnt/user/appdata/seafile/seafile.conf:/shared/seafile/conf/seafile.conf
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
networks:
- seafile-net
seadoc:
image: seafileltd/sdoc-server:2.0.3-testing
container_name: seadoc
restart: unless-stopped
ports:
- 8888:80
environment:
- DB_HOST=db
- DB_PORT=3306
- DB_USER=seafile
- DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD}
- DB_NAME=seahub_db
- TIME_ZONE=Etc/UTC
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY}
- SEAHUB_SERVICE_URL=https://${SEAFILE_SERVER_HOSTNAME}
volumes:
- /mnt/user/appdata/seafile/seadoc-data:/shared
depends_on:
db:
condition: service_healthy
networks:
- seafile-net
notification-server:
image: seafileltd/notification-server:13.0.0-testing
container_name: notification-server
restart: unless-stopped
ports:
- 8083:8083
environment:
- SEAFILE_MYSQL_DB_HOST=db
- SEAFILE_MYSQL_DB_PORT=3306
- SEAFILE_MYSQL_DB_USER=seafile
- SEAFILE_MYSQL_DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD}
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY}
- SEAFILE_LOG_TO_STDOUT=true
volumes:
- /mnt/user/appdata/seafile/data/seafile/logs:/shared/seafile/logs
depends_on:
db:
condition: service_healthy
networks:
- seafile-net
seafile-md-server:
image: seafileltd/seafile-md-server:13.0.6-testing
container_name: seafile-md-server
restart: unless-stopped
ports:
- 8084:8084
environment:
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY}
- SEAFILE_MYSQL_DB_HOST=db
- SEAFILE_MYSQL_DB_PORT=3306
- SEAFILE_MYSQL_DB_USER=seafile
- SEAFILE_MYSQL_DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD}
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
- MD_PORT=8084
- MD_STORAGE_TYPE=s3
- S3_MD_BUCKET=seafile-md
- S3_KEY_ID=${S3_KEY_ID}
- S3_SECRET_KEY=${S3_SECRET_KEY}
- S3_AWS_REGION=us-east-1
- S3_HOST=s3.amazonaws.com
- S3_USE_HTTPS=true
- S3_USE_V4_SIGNATURE=true
- CACHE_PROVIDER=redis
- REDIS_HOST=redis
- REDIS_PORT=6379
volumes:
- /mnt/user/appdata/seafile/data:/shared
depends_on:
db:
condition: service_healthy
networks:
- seafile-net
seasearch:
image: seafileltd/seasearch:1.0.1-testing
container_name: seafile-seasearch
restart: unless-stopped
ports:
- 4080:4080
environment:
- SS_MAX_OBJ_CACHE_SIZE=10GB
- SS_STORAGE_TYPE=disk
- SS_LOG_TO_STDOUT=true
- SS_LOG_LEVEL=info
volumes:
- /mnt/user/appdata/seafile/seasearch-data:/opt/seasearch/data
networks:
- seafile-net