diff --git a/budibase/budibase.env b/budibase/budibase.env new file mode 100644 index 0000000..ca2bb78 --- /dev/null +++ b/budibase/budibase.env @@ -0,0 +1,25 @@ +# Use the main port in the builder for your self hosting URL, e.g. localhost:10000 +MAIN_PORT=10000 + +# This section contains all secrets pertaining to the system +# These should be updated +JWT_SECRET= +MINIO_ACCESS_KEY= +MINIO_SECRET_KEY= +COUCH_DB_PASSWORD= +COUCH_DB_USER=budibase +REDIS_PASSWORD= +INTERNAL_API_KEY= + +# This section contains variables that do not need to be altered under normal circumstances +APP_PORT=4002 +WORKER_PORT=4003 +MINIO_PORT=4004 +COUCH_DB_PORT=4005 +REDIS_PORT=6379 +WATCHTOWER_PORT=6161 +BUDIBASE_ENVIRONMENT=PRODUCTION + +# An admin user can be automatically created initially if these are set +BB_ADMIN_USER_EMAIL=sid@one800.help +BB_ADMIN_USER_PASSWORD= diff --git a/budibase/docker-compose.yml b/budibase/docker-compose.yml new file mode 100644 index 0000000..0e60c95 --- /dev/null +++ b/budibase/docker-compose.yml @@ -0,0 +1,155 @@ +version: "3.8" + +services: + app-service: + image: budibase.docker.scarf.sh/budibase/apps + restart: unless-stopped + container_name: budibase-app + environment: + SELF_HOSTED: 1 + COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984 + WORKER_URL: http://worker-service:4003 + MINIO_URL: http://minio-service:9000 + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + INTERNAL_API_KEY: ${INTERNAL_API_KEY} + BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT} + PORT: 4002 + JWT_SECRET: ${JWT_SECRET} + LOG_LEVEL: info + ENABLE_ANALYTICS: "false" + REDIS_URL: redis-service:6379 + REDIS_PASSWORD: ${REDIS_PASSWORD} + BB_ADMIN_USER_EMAIL: ${BB_ADMIN_USER_EMAIL} + BB_ADMIN_USER_PASSWORD: ${BB_ADMIN_USER_PASSWORD} + depends_on: + - worker-service + - redis-service + networks: + - budibase + + worker-service: + restart: unless-stopped + image: budibase.docker.scarf.sh/budibase/worker + container_name: budibase-worker + environment: + SELF_HOSTED: 1 + PORT: 4003 + CLUSTER_PORT: ${MAIN_PORT} + JWT_SECRET: ${JWT_SECRET} + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + MINIO_URL: http://minio-service:9000 + APPS_URL: http://app-service:4002 + COUCH_DB_USERNAME: ${COUCH_DB_USER} + COUCH_DB_PASSWORD: ${COUCH_DB_PASSWORD} + COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984 + INTERNAL_API_KEY: ${INTERNAL_API_KEY} + REDIS_URL: redis-service:6379 + REDIS_PASSWORD: ${REDIS_PASSWORD} + depends_on: + - redis-service + - minio-service + - couch-init + networks: + - budibase + + minio-service: + restart: unless-stopped + image: minio/minio + container_name: budibase-minio + volumes: + - minio_data:/data + environment: + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + MINIO_BROWSER: "off" + command: server /data --console-address ":9001" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + networks: + - budibase + + proxy-service: + restart: unless-stopped + ports: + - "${MAIN_PORT}:10000" + container_name: budibase-proxy + image: budibase/proxy + environment: + - PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND=10 + - PROXY_RATE_LIMIT_API_PER_SECOND=20 + depends_on: + - minio-service + - worker-service + - app-service + - couchdb-service + networks: + - budibase + - reverseproxy-nw + + couchdb-service: + restart: unless-stopped + image: ibmcom/couchdb3 + container_name: budibase-couchdb + environment: + - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD} + - COUCHDB_USER=${COUCH_DB_USER} + volumes: + - couchdb3_data:/opt/couchdb/data + networks: + - budibase + + couch-init: + image: curlimages/curl + container_name: budibase-couchinit + environment: + PUT_CALL: "curl -u ${COUCH_DB_USER}:${COUCH_DB_PASSWORD} -X PUT couchdb-service:5984" + depends_on: + - couchdb-service + command: ["sh","-c","sleep 10 && $${PUT_CALL}/_users && $${PUT_CALL}/_replicator; fg;"] + networks: + - budibase + + redis-service: + restart: unless-stopped + image: redis + container_name: budibase-redis + command: redis-server --requirepass ${REDIS_PASSWORD} + volumes: + - redis_data:/data + networks: + - budibase + - reverseproxy-nw + + watchtower-service: + restart: always + image: containrrr/watchtower + container_name: budibase-watchtower + volumes: + - /var/run/docker.sock:/var/run/docker.sock + command: --debug --http-api-update bbapps bbworker bbproxy + environment: + - WATCHTOWER_HTTP_API=true + - WATCHTOWER_HTTP_API_TOKEN=budibase + - WATCHTOWER_CLEANUP=true + labels: + - "com.centurylinklabs.watchtower.enable=false" + networks: + - budibase + +volumes: + couchdb3_data: + driver: local + minio_data: + driver: local + redis_data: + driver: local + +networks: + budibase: + reverseproxy-nw: + external: true