services: php: container_name: "dootask-php-${APP_ID}" image: "kuaifan/php:swoole-8.0.rc18" shm_size: 2G ulimits: core: soft: 0 hard: 0 volumes: - shared_data:/usr/share/dootask - ./docker/crontab/crontab.conf:/etc/supervisor/conf.d/crontab.conf - ./docker/php/php.conf:/etc/supervisor/conf.d/php.conf - ./docker/php/php.ini:/usr/local/etc/php/php.ini - ./docker/logs/supervisor:/var/log/supervisor - ./:/var/www environment: LANG: "C.UTF-8" MODE: "production" MYSQL_HOST: "${DB_HOST}" MYSQL_PORT: "${DB_PORT}" MYSQL_DB_NAME: "${DB_DATABASE}" MYSQL_USERNAME: "${DB_USERNAME}" MYSQL_PASSWORD: "${DB_PASSWORD}" networks: extnetwork: ipv4_address: "${APP_IPPR}.2" depends_on: mariadb: condition: service_healthy redis: condition: service_healthy restart: unless-stopped nginx: container_name: "dootask-nginx-${APP_ID}" image: "nginx:alpine" ports: - "${APP_PORT}:80" - "${APP_SSL_PORT:-}:443" volumes: - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf - ./:/var/www networks: extnetwork: ipv4_address: "${APP_IPPR}.3" restart: unless-stopped redis: container_name: "dootask-redis-${APP_ID}" image: "redis:alpine" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 networks: extnetwork: ipv4_address: "${APP_IPPR}.4" restart: unless-stopped mariadb: container_name: "dootask-mariadb-${APP_ID}" image: "mariadb:10.7.3" volumes: - ./docker/mysql/repassword.sh:/etc/mysql/repassword.sh - ./docker/mysql/conf.d:/etc/mysql/conf.d - ./docker/mysql/data:/var/lib/mysql environment: MYSQL_PREFIX: "${DB_PREFIX}" MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}" MYSQL_DATABASE: "${DB_DATABASE}" MYSQL_USER: "${DB_USERNAME}" MYSQL_PASSWORD: "${DB_PASSWORD}" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "${DB_USERNAME}", "-p${DB_PASSWORD}"] interval: 5s timeout: 5s retries: 5 networks: extnetwork: ipv4_address: "${APP_IPPR}.5" restart: unless-stopped office: container_name: "dootask-office-${APP_ID}" image: "onlyoffice/documentserver:8.2.2.1" volumes: - ./docker/logs/onlyoffice:/var/log/onlyoffice - ./docker/office/data:/var/www/onlyoffice/Data - ./docker/office/etc/documentserver/default.json:/etc/onlyoffice/documentserver/default.json - ./docker/office/resources/require.js:/var/www/onlyoffice/documentserver/web-apps/vendor/requirejs/require.js - ./docker/office/resources/common/main/resources/img/header:/var/www/onlyoffice/documentserver/web-apps/apps/common/main/resources/img/header - ./docker/office/resources/documenteditor/main/resources/css/app.css:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/resources/css/app.css - ./docker/office/resources/documenteditor/mobile/css/526.caf35c11a8d72ca5ac85.css:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/mobile/css/526.caf35c11a8d72ca5ac85.css - ./docker/office/resources/presentationeditor/main/resources/css/app.css:/var/www/onlyoffice/documentserver/web-apps/apps/presentationeditor/main/resources/css/app.css - ./docker/office/resources/presentationeditor/mobile/css/923.f9cf19de1a25c2e7bf8b.css:/var/www/onlyoffice/documentserver/web-apps/apps/presentationeditor/mobile/css/923.f9cf19de1a25c2e7bf8b.css - ./docker/office/resources/spreadsheeteditor/main/resources/css/app.css:/var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/main/resources/css/app.css - ./docker/office/resources/spreadsheeteditor/mobile/css/611.1bef49f175e18fc085db.css:/var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/mobile/css/611.1bef49f175e18fc085db.css environment: JWT_SECRET: ${APP_KEY} networks: extnetwork: ipv4_address: "${APP_IPPR}.6" restart: unless-stopped fileview: container_name: "dootask-fileview-${APP_ID}" image: "kuaifan/fileview:4.4.0-4" environment: KK_CONTEXT_PATH: "/fileview" KK_OFFICE_PREVIEW_SWITCH_DISABLED: true KK_MEDIA_CONVERT_DISABLE: true networks: extnetwork: ipv4_address: "${APP_IPPR}.7" restart: unless-stopped drawio-webapp: container_name: "dootask-drawio-webapp-${APP_ID}" image: "jgraph/drawio:24.7.17" volumes: - ./docker/drawio/webapp/index.html:/usr/local/tomcat/webapps/draw/index.html - ./docker/drawio/webapp/stencils:/usr/local/tomcat/webapps/draw/stencils - ./docker/drawio/webapp/js/app.min.js:/usr/local/tomcat/webapps/draw/js/app.min.js - ./docker/drawio/webapp/js/croppie/croppie.min.css:/usr/local/tomcat/webapps/draw/js/croppie/croppie.min.css - ./docker/drawio/webapp/js/diagramly/ElectronApp.js:/usr/local/tomcat/webapps/draw/js/diagramly/ElectronApp.js networks: extnetwork: ipv4_address: "${APP_IPPR}.8" restart: unless-stopped drawio-export: container_name: "dootask-drawio-export-${APP_ID}" image: "kuaifan/export-server:0.0.1" networks: extnetwork: ipv4_address: "${APP_IPPR}.9" volumes: - ./docker/drawio/export/fonts:/usr/share/fonts/drawio restart: unless-stopped minder: container_name: "dootask-minder-${APP_ID}" image: "kuaifan/minder:0.1.3" networks: extnetwork: ipv4_address: "${APP_IPPR}.10" restart: unless-stopped approve: container_name: "dootask-approve-${APP_ID}" image: "kuaifan/dooapprove:0.1.5" environment: TZ: "${TIMEZONE:-PRC}" MYSQL_HOST: "${DB_HOST}" MYSQL_PORT: "${DB_PORT}" MYSQL_DBNAME: "${DB_DATABASE}" MYSQL_USERNAME: "${DB_USERNAME}" MYSQL_PASSWORD: "${DB_PASSWORD}" MYSQL_Prefix: "${DB_PREFIX}approve_" DEMO_DATA: true KEY: ${APP_KEY} networks: extnetwork: ipv4_address: "${APP_IPPR}.11" restart: unless-stopped ai: container_name: "dootask-ai-${APP_ID}" image: "kuaifan/dootask-ai:0.3.5" environment: REDIS_HOST: "${REDIS_HOST}" REDIS_PORT: "${REDIS_PORT}" TIMEOUT: 600 networks: extnetwork: ipv4_address: "${APP_IPPR}.12" restart: unless-stopped face: container_name: "dootask-face-${APP_ID}" image: "hitosea2020/dooface:0.0.1" ports: - "7788:7788" environment: TZ: "${TIMEZONE:-PRC}" STORAGE: mysql MYSQL_HOST: "${DB_HOST}" MYSQL_PORT: "${DB_PORT}" MYSQL_USERNAME: "${DB_USERNAME}" MYSQL_PASSWORD: "${DB_PASSWORD}" MYSQL_DB_NAME: "${DB_DATABASE}" DB_PREFIX: "${DB_PREFIX}" REPORT_API: "http://nginx/api/public/checkin/report" networks: extnetwork: ipv4_address: "${APP_IPPR}.14" restart: unless-stopped search: container_name: "dootask-search-${APP_ID}" image: "public.ecr.aws/zinclabs/zincsearch:0.4.10" volumes: - search_data:/data environment: ZINC_DATA_PATH: "/data" ZINC_FIRST_ADMIN_USER: "${DB_USERNAME}" ZINC_FIRST_ADMIN_PASSWORD: "${DB_PASSWORD}" deploy: resources: limits: cpus: '2' networks: extnetwork: ipv4_address: "${APP_IPPR}.15" restart: unless-stopped appstore: container_name: "dootask-appstore-${APP_ID}" privileged: true image: "kuaifan/dootask-appstore:0.0.2" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./:/var/www environment: DOO_ENV: "/var/www" HOST_PWD: "${PWD}" network_mode: host restart: unless-stopped networks: extnetwork: name: "dootask-networks-${APP_ID}" ipam: config: - subnet: "${APP_IPPR}.0/24" gateway: "${APP_IPPR}.1" volumes: shared_data: name: "dootask-shared-data-${APP_ID}" redis_data: name: "dootask-redis-data-${APP_ID}" search_data: name: "dootask-search-data-${APP_ID}"