diff --git a/supernote/docker-compose.yml b/supernote/docker-compose.yml new file mode 100644 index 0000000..4c6c9c2 --- /dev/null +++ b/supernote/docker-compose.yml @@ -0,0 +1,89 @@ +services: + mariadb: + image: mariadb:10.6.24 + container_name: mariadb + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: supernotedb + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + TZ: ${TZ:-UTC} + command: --skip-name-resolve --bind-address=0.0.0.0 + volumes: + - ./sndata/db_data:/var/lib/mysql + - ./sndata/config/mysql/conf.d:/etc/mysql/conf.d:ro + - ./supernotedb.sql:/docker-entrypoint-initdb.d/00-supernotedb.sql:ro + - ./supernote-email-init.sql:/docker-entrypoint-initdb.d/01-supernote-email-init.sql:ro + - /etc/localtime:/etc/localtime:ro + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -p$$MYSQL_ROOT_PASSWORD || exit 1"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s + restart: unless-stopped + + redis: + image: redis:7.4.7 + container_name: redis + environment: + TZ: ${TZ:-UTC} + command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"] + volumes: + - ./sndata/redis_data:/data + - /etc/localtime:/etc/localtime:ro + restart: unless-stopped + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 3s + retries: 3 + + notelib: + image: docker.io/supernote/notelib:6.9.3 + container_name: notelib + environment: + TZ: ${TZ:-UTC} + volumes: + - /etc/localtime:/etc/localtime:ro + restart: unless-stopped + + supernote-service: + image: docker.io/supernote/supernote-service:26.06.04 + container_name: supernote-service + depends_on: + mariadb: + condition: service_healthy + redis: + condition: service_healthy + ports: + - "19071:19071" + - "18072:18072" + - "${FRONTEND_PORT:-19072}:8080" + - "${DOMAIN_PORT:-8199}:8080" + environment: + EXTERNAL_PORT_BACKEND: "19071" + EXTERNAL_PORT_FRONTEND: ${FRONTEND_PORT:-19072} + EXTERNAL_PORT_DOMAIN: ${DOMAIN_PORT:-8199} + TZ: ${TZ:-UTC} + DB_HOSTNAME: mariadb + MYSQL_DATABASE: supernotedb + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + REDIS_HOST: redis + REDIS_PORT: 6379 + REDIS_PASSWORD: ${REDIS_PASSWORD} + volumes: + - ./sndata/recycle:/home/supernote/recycle + - ./supernote_data:/home/supernote/data + - ./sndata/logs/cloud:/home/supernote/cloud/logs + - ./sndata/logs/app:/home/supernote/logs + - ./sndata/logs/web:/var/log/nginx + - ./sndata/convert:/home/supernote/convert + - /etc/localtime:/etc/localtime:ro + restart: unless-stopped + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3"