Last active
March 17, 2022 12:28
-
-
Save TorstenDittmann/7dfd1c10345023066f1b98098426fb26 to your computer and use it in GitHub Desktop.
improve docker yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # WARNING! | |
| # This is a development version of THE Appwrite docker-compose.yml file. | |
| # Avoid using this file in your production environment. | |
| # We're exposing here sensitive ports and mounting code volumes for rapid development and debugging of the server stack. | |
| version: '3' | |
| x-env-defaults: &x-env-defaults |- | |
| _APP_ENV | |
| _APP_LOCALE | |
| _APP_WORKER_PER_CORE | |
| _APP_LOGGING_PROVIDER | |
| _APP_LOGGING_CONFIG | |
| _APP_OPTIONS_ABUSE | |
| _APP_OPTIONS_FORCE_HTTPS | |
| _APP_DOMAIN | |
| _APP_DOMAIN_TARGET | |
| _APP_SYSTEM_EMAIL_NAME | |
| _APP_SYSTEM_EMAIL_ADDRESS | |
| _APP_SYSTEM_SECURITY_EMAIL_ADDRESS | |
| _APP_USAGE_STATS | |
| x-env-db: &x-env-db |- | |
| _APP_OPENSSL_KEY_V1 | |
| _APP_DB_HOST | |
| _APP_DB_PORT | |
| _APP_DB_SCHEMA | |
| _APP_DB_USER | |
| _APP_DB_PASS | |
| x-env-redis: &x-env-redis |- | |
| _APP_REDIS_HOST | |
| _APP_REDIS_PORT | |
| _APP_REDIS_USER | |
| _APP_REDIS_PASS | |
| x-env-smtp: &x-env-smtp |- | |
| _APP_SMTP_HOST | |
| _APP_SMTP_PORT | |
| _APP_SMTP_SECURE | |
| _APP_SMTP_USERNAME | |
| _APP_SMTP_PASSWORD | |
| x-env-storage: &x-env-storage |- | |
| _APP_OPENSSL_KEY_V1 | |
| _APP_STORAGE_ANTIVIRUS | |
| _APP_STORAGE_ANTIVIRUS_HOST | |
| _APP_STORAGE_ANTIVIRUS_PORT | |
| _APP_STORAGE_DEVICE | |
| _APP_STORAGE_S3_ACCESS_KEY | |
| _APP_STORAGE_S3_SECRET | |
| _APP_STORAGE_S3_REGION | |
| _APP_STORAGE_S3_BUCKET | |
| _APP_STORAGE_DO_SPACES_ACCESS_KEY | |
| _APP_STORAGE_DO_SPACES_SECRET | |
| _APP_STORAGE_DO_SPACES_REGION | |
| _APP_STORAGE_DO_SPACES_BUCKET | |
| services: | |
| traefik: | |
| image: traefik:2.5 | |
| container_name: appwrite-traefik | |
| command: | |
| - --log.level=DEBUG | |
| - --api.insecure=true | |
| - --providers.file.directory=/storage/config | |
| - --providers.file.watch=true | |
| - --providers.docker=true | |
| - --providers.docker.exposedByDefault=false | |
| - --providers.docker.constraints=Label(`traefik.constraint-label-stack`,`appwrite`) | |
| - --entrypoints.appwrite_web.address=:80 | |
| - --entrypoints.appwrite_websecure.address=:443 | |
| - --accesslog=true | |
| ports: | |
| - 80:80 | |
| - 8080:80 | |
| - 443:443 | |
| - 9500:8080 | |
| volumes: | |
| - /var/run/docker.sock:/var/run/docker.sock | |
| - appwrite-config:/storage/config:ro | |
| - appwrite-certificates:/storage/certificates:ro | |
| depends_on: | |
| - appwrite | |
| networks: | |
| - gateway | |
| - appwrite | |
| appwrite: | |
| container_name: appwrite | |
| build: | |
| context: . | |
| args: | |
| - DEBUG=false | |
| - TESTING=true | |
| - VERSION=dev | |
| ports: | |
| - 9501:80 | |
| networks: | |
| - appwrite | |
| labels: | |
| - "traefik.enable=true" | |
| - "traefik.constraint-label-stack=appwrite" | |
| - "traefik.docker.network=appwrite" | |
| - "traefik.http.services.appwrite_api.loadbalancer.server.port=80" | |
| #http | |
| - traefik.http.routers.appwrite_api_http.entrypoints=appwrite_web | |
| - traefik.http.routers.appwrite_api_http.rule=PathPrefix(`/`) | |
| - traefik.http.routers.appwrite_api_http.service=appwrite_api | |
| # https | |
| - traefik.http.routers.appwrite_api_https.entrypoints=appwrite_websecure | |
| - traefik.http.routers.appwrite_api_https.rule=PathPrefix(`/`) | |
| - traefik.http.routers.appwrite_api_https.service=appwrite_api | |
| - traefik.http.routers.appwrite_api_https.tls=true | |
| volumes: | |
| - appwrite-uploads:/storage/uploads:rw | |
| - appwrite-cache:/storage/cache:rw | |
| - appwrite-config:/storage/config:rw | |
| - appwrite-certificates:/storage/certificates:rw | |
| - appwrite-functions:/storage/functions:rw | |
| - ./phpunit.xml:/usr/src/code/phpunit.xml | |
| - ./psalm.xml:/usr/src/code/psalm.xml | |
| - ./tests:/usr/src/code/tests | |
| - ./app:/usr/src/code/app | |
| # - ./vendor:/usr/src/code/vendor | |
| - ./docs:/usr/src/code/docs | |
| - ./public:/usr/src/code/public | |
| - ./src:/usr/src/code/src | |
| # - ./debug:/tmp | |
| - ./dev:/usr/local/dev | |
| depends_on: | |
| - mariadb | |
| - redis | |
| # - clamav | |
| entrypoint: | |
| - php | |
| - -e | |
| - app/http.php | |
| - -dopcache.preload=opcache.preload=/usr/src/code/app/preload.php | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| - *x-env-storage | |
| - *x-env-smtp | |
| - _APP_CONSOLE_WHITELIST_ROOT | |
| - _APP_CONSOLE_WHITELIST_EMAILS | |
| - _APP_CONSOLE_WHITELIST_IPS | |
| - _APP_SYSTEM_RESPONSE_FORMAT | |
| - _APP_STORAGE_LIMIT | |
| - _APP_FUNCTIONS_SIZE_LIMIT | |
| - _APP_FUNCTIONS_TIMEOUT | |
| - _APP_FUNCTIONS_BUILD_TIMEOUT | |
| - _APP_FUNCTIONS_CONTAINERS | |
| - _APP_FUNCTIONS_CPUS | |
| - _APP_FUNCTIONS_MEMORY | |
| - _APP_FUNCTIONS_MEMORY_SWAP | |
| - _APP_FUNCTIONS_RUNTIMES | |
| - _APP_EXECUTOR_SECRET | |
| appwrite-realtime: | |
| entrypoint: realtime | |
| container_name: appwrite-realtime | |
| build: | |
| context: . | |
| restart: unless-stopped | |
| ports: | |
| - 9505:80 | |
| labels: | |
| - "traefik.enable=true" | |
| - "traefik.constraint-label-stack=appwrite" | |
| - "traefik.docker.network=appwrite" | |
| - "traefik.http.services.appwrite_realtime.loadbalancer.server.port=80" | |
| #ws | |
| - traefik.http.routers.appwrite_realtime_ws.entrypoints=appwrite_web | |
| - traefik.http.routers.appwrite_realtime_ws.rule=PathPrefix(`/v1/realtime`) | |
| - traefik.http.routers.appwrite_realtime_ws.service=appwrite_realtime | |
| # wss | |
| - traefik.http.routers.appwrite_realtime_wss.entrypoints=appwrite_websecure | |
| - traefik.http.routers.appwrite_realtime_wss.rule=PathPrefix(`/v1/realtime`) | |
| - traefik.http.routers.appwrite_realtime_wss.service=appwrite_realtime | |
| - traefik.http.routers.appwrite_realtime_wss.tls=true | |
| - traefik.http.routers.appwrite_realtime_wss.tls.certresolver=dns | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| # - ./vendor:/usr/src/code/vendor | |
| depends_on: | |
| - mariadb | |
| - redis | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| appwrite-worker-audits: | |
| entrypoint: worker-audits | |
| container_name: appwrite-worker-audits | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| - mariadb | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| appwrite-worker-webhooks: | |
| entrypoint: worker-webhooks | |
| container_name: appwrite-worker-webhooks | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| - mariadb | |
| - request-catcher | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| appwrite-worker-deletes: | |
| entrypoint: worker-deletes | |
| container_name: appwrite-worker-deletes | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - appwrite-uploads:/storage/uploads:rw | |
| - appwrite-cache:/storage/cache:rw | |
| - appwrite-functions:/storage/functions:rw | |
| - appwrite-builds:/storage/builds:rw | |
| - appwrite-certificates:/storage/certificates:rw | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| - mariadb | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| - *x-env-storage | |
| - _APP_EXECUTOR_SECRET | |
| appwrite-worker-database: | |
| entrypoint: worker-database | |
| container_name: appwrite-worker-database | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| # - ./vendor/utopia-php/database:/usr/src/code/vendor/utopia-php/database | |
| depends_on: | |
| - redis | |
| - mariadb | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| appwrite-worker-builds: | |
| entrypoint: worker-builds | |
| container_name: appwrite-worker-builds | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| - mariadb | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| - _APP_EXECUTOR_SECRET | |
| appwrite-worker-certificates: | |
| entrypoint: worker-certificates | |
| container_name: appwrite-worker-certificates | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - appwrite-config:/storage/config:rw | |
| - appwrite-certificates:/storage/certificates:rw | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| - mariadb | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| appwrite-worker-functions: | |
| entrypoint: worker-functions | |
| container_name: appwrite-worker-functions | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| - mariadb | |
| - appwrite-executor | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| - _APP_FUNCTIONS_TIMEOUT | |
| - _APP_EXECUTOR_SECRET | |
| - DOCKERHUB_PULL_USERNAME | |
| - DOCKERHUB_PULL_PASSWORD | |
| appwrite-executor: | |
| container_name: appwrite-executor | |
| entrypoint: executor | |
| stop_signal: SIGINT | |
| build: | |
| context: . | |
| args: | |
| - DEBUG=false | |
| - TESTING=true | |
| - VERSION=dev | |
| networks: | |
| appwrite: | |
| runtimes: | |
| ports: | |
| - 9519:80 | |
| volumes: | |
| - /var/run/docker.sock:/var/run/docker.sock | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| - appwrite-functions:/storage/functions:rw | |
| - appwrite-builds:/storage/builds:rw | |
| - /tmp:/tmp:rw | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-storage | |
| - _APP_FUNCTIONS_TIMEOUT | |
| - _APP_FUNCTIONS_BUILD_TIMEOUT | |
| - _APP_FUNCTIONS_CONTAINERS | |
| - _APP_FUNCTIONS_RUNTIMES | |
| - _APP_FUNCTIONS_CPUS | |
| - _APP_FUNCTIONS_MEMORY | |
| - _APP_FUNCTIONS_MEMORY_SWAP | |
| - _APP_FUNCTIONS_INACTIVE_THRESHOLD | |
| - _APP_EXECUTOR_SECRET | |
| - _APP_EXECUTOR_RUNTIME_NETWORK | |
| - DOCKERHUB_PULL_USERNAME | |
| - DOCKERHUB_PULL_PASSWORD | |
| appwrite-worker-mails: | |
| entrypoint: worker-mails | |
| container_name: appwrite-worker-mails | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| - maildev | |
| # - smtp | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-redis | |
| - *x-env-smtp | |
| appwrite-maintenance: | |
| entrypoint: maintenance | |
| container_name: appwrite-maintenance | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-redis | |
| - _APP_MAINTENANCE_INTERVAL | |
| - _APP_MAINTENANCE_RETENTION_EXECUTION | |
| - _APP_MAINTENANCE_RETENTION_ABUSE | |
| - _APP_MAINTENANCE_RETENTION_AUDIT | |
| appwrite-usage: | |
| entrypoint: usage | |
| container_name: appwrite-usage | |
| build: | |
| context: . | |
| args: | |
| - DEBUG=false | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| - ./dev:/usr/local/dev | |
| depends_on: | |
| - influxdb | |
| - mariadb | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-db | |
| - *x-env-redis | |
| - _APP_INFLUXDB_HOST | |
| - _APP_INFLUXDB_PORT | |
| - _APP_USAGE_SYNC_INTERVAL | |
| appwrite-schedule: | |
| entrypoint: schedule | |
| container_name: appwrite-schedule | |
| build: | |
| context: . | |
| networks: | |
| - appwrite | |
| volumes: | |
| - ./app:/usr/src/code/app | |
| - ./src:/usr/src/code/src | |
| depends_on: | |
| - redis | |
| environment: | |
| - *x-env-defaults | |
| - *x-env-redis | |
| mariadb: | |
| image: mariadb:10.7 # fix issues when upgrading using: mysql_upgrade -u root -p | |
| container_name: appwrite-mariadb | |
| networks: | |
| - appwrite | |
| volumes: | |
| - appwrite-mariadb:/var/lib/mysql:rw | |
| ports: | |
| - "3306:3306" | |
| environment: | |
| - MYSQL_ROOT_PASSWORD=password | |
| - MYSQL_DATABASE=${_APP_DB_SCHEMA} | |
| - MYSQL_USER=user | |
| - MYSQL_PASSWORD=${_APP_DB_PASS} | |
| command: 'mysqld --innodb-flush-method=fsync' # add ' --query_cache_size=0' for DB tests | |
| # command: mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bu && mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bu | |
| # smtp: | |
| # image: appwrite/smtp:1.2.0 | |
| # container_name: appwrite-smtp | |
| # restart: unless-stopped | |
| # networks: | |
| # - appwrite | |
| # environment: | |
| # - LOCAL_DOMAINS=@ | |
| # - RELAY_FROM_HOSTS=192.168.0.0/16 ; *.yourdomain.com | |
| # - SMARTHOST_HOST=smtp | |
| # - SMARTHOST_PORT=587 | |
| redis: | |
| image: redis:6.2-alpine | |
| container_name: appwrite-redis | |
| ports: | |
| - "6379:6379" | |
| networks: | |
| - appwrite | |
| volumes: | |
| - appwrite-redis:/data:rw | |
| # clamav: | |
| # image: appwrite/clamav:1.2.0 | |
| # container_name: appwrite-clamav | |
| # networks: | |
| # - appwrite | |
| # volumes: | |
| # - appwrite-uploads:/storage/uploads | |
| influxdb: | |
| image: appwrite/influxdb:1.4.0 | |
| container_name: appwrite-influxdb | |
| networks: | |
| - appwrite | |
| volumes: | |
| - appwrite-influxdb:/var/lib/influxdb:rw | |
| telegraf: | |
| image: appwrite/telegraf:1.3.0 | |
| container_name: appwrite-telegraf | |
| networks: | |
| - appwrite | |
| environment: | |
| - _APP_INFLUXDB_HOST | |
| - _APP_INFLUXDB_PORT | |
| # Dev Tools Start ------------------------------------------------------------------------------------------ | |
| # | |
| # The Appwrite Team uses the following tools to help debug, monitor and diagnose the Appwrite stack | |
| # | |
| # Here is a description of the different tools and why are we using them: | |
| # | |
| # MailCatcher - An SMTP server. Catches all system emails and displays them in a nice UI. | |
| # RequestCatcher - An HTTP server. Catches all system https calls and displays them using a simple HTTP API. Used to debug & tests webhooks and HTTP tasks | |
| # RedisCommander - A nice UI for exploring Redis data | |
| # Resque - A nice UI for exploring Reddis pub/sub, view the different queues workloads, pending and failed tasks | |
| # Chronograf - A nice UI for exploring InfluxDB data | |
| # Webgrind - A nice UI for exploring and debugging code-level stuff | |
| maildev: # used mainly for dev tests | |
| image: appwrite/mailcatcher:1.0.0 | |
| container_name: appwrite-mailcatcher | |
| ports: | |
| - '9503:1080' | |
| networks: | |
| - appwrite | |
| request-catcher: # used mainly for dev tests | |
| image: appwrite/requestcatcher:1.0.0 | |
| container_name: appwrite-requestcatcher | |
| ports: | |
| - '9504:5000' | |
| networks: | |
| - appwrite | |
| adminer: | |
| image: adminer | |
| container_name: appwrite-adminer | |
| restart: always | |
| ports: | |
| - 9506:8080 | |
| networks: | |
| - appwrite | |
| # redis-commander: | |
| # image: rediscommander/redis-commander:latest | |
| # restart: unless-stopped | |
| # networks: | |
| # - appwrite | |
| # environment: | |
| # - REDIS_HOSTS=redis | |
| # ports: | |
| # - "8081:8081" | |
| # resque: | |
| # image: appwrite/resque-web:1.1.0 | |
| # restart: unless-stopped | |
| # networks: | |
| # - appwrite | |
| # ports: | |
| # - "5678:5678" | |
| # environment: | |
| # - RESQUE_WEB_HOST=redis | |
| # - RESQUE_WEB_PORT=6379 | |
| # - RESQUE_WEB_HTTP_BASIC_AUTH_USER=user | |
| # - RESQUE_WEB_HTTP_BASIC_AUTH_PASSWORD=password | |
| # chronograf: | |
| # image: chronograf:1.5 | |
| # container_name: appwrite-chronograf | |
| # restart: unless-stopped | |
| # networks: | |
| # - appwrite | |
| # volumes: | |
| # - appwrite-chronograf:/var/lib/chronograf | |
| # ports: | |
| # - "8888:8888" | |
| # environment: | |
| # - INFLUXDB_URL=http://influxdb:8086 | |
| # - KAPACITOR_URL=http://kapacitor:9092 | |
| # - AUTH_DURATION=48h | |
| # - TOKEN_SECRET=duperduper5674829!jwt | |
| # - GH_CLIENT_ID=d86f7145a41eacfc52cc | |
| # - GH_CLIENT_SECRET=9e0081062367a2134e7f2ea95ba1a32d08b6c8ab | |
| # - GH_ORGS=appwrite | |
| # webgrind: | |
| # image: 'jokkedk/webgrind:latest' | |
| # volumes: | |
| # - './debug:/tmp' | |
| # ports: | |
| # - '3001:80' | |
| # Dev Tools End ------------------------------------------------------------------------------------------ | |
| networks: | |
| gateway: | |
| appwrite: | |
| runtimes: | |
| volumes: | |
| appwrite-mariadb: | |
| appwrite-redis: | |
| appwrite-cache: | |
| appwrite-uploads: | |
| appwrite-certificates: | |
| appwrite-functions: | |
| appwrite-builds: | |
| appwrite-influxdb: | |
| appwrite-config: | |
| appwrite-executor: | |
| # appwrite-chronograf: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment