version: "3.8" # NEODB Docker Compose File # # Note: may not be secure for production usage, use at your own risk # # The following env variable are expected from .env or command line # - NEODB_SECRET_KEY # - NEODB_SITE_DOMAIN # - NEODB_SITE_NAME # - NEODB_DATA x-shared: neodb-service: &neodb-service build: . image: neodb/neodb:${TAG:-latest} environment: - NEODB_SITE_NAME - NEODB_SITE_DOMAIN - NEODB_DEBUG - NEODB_SECRET_KEY - NEODB_DB_NAME=neodb - NEODB_DB_USER=neodb - NEODB_DB_PASSWORD=aubergine - NEODB_DB_HOST=neodb-db - NEODB_DB_PORT=5432 - NEODB_REDIS_HOST=redis - NEODB_REDIS_PORT=6379 - NEODB_REDIS_DB=0 - NEODB_TYPESENSE_ENABLE=1 - NEODB_TYPESENSE_HOST=typesense - NEODB_TYPESENSE_PORT=8108 - NEODB_TYPESENSE_KEY=eggplant - NEODB_FROM_EMAIL=no-reply@${NEODB_SITE_DOMAIN} - NEODB_MEDIA_ROOT=/www/m/ - NEODB_WEB_SERVER=neodb-web:8000 - TAKAHE_DB_NAME=takahe - TAKAHE_DB_USER=takahe - TAKAHE_DB_PASSWORD=aubergine - TAKAHE_DB_HOST=takahe-db - TAKAHE_DB_PORT=5432 - TAKAHE_SECRET_KEY=${NEODB_SECRET_KEY} - TAKAHE_MAIN_DOMAIN=${NEODB_SITE_DOMAIN} - TAKAHE_MEDIA_URL=https://${NEODB_SITE_DOMAIN}/media/ - TAKAHE_EMAIL_FROM=no-reply@${NEODB_SITE_DOMAIN} - TAKAHE_DATABASE_SERVER=postgres://takahe:aubergine@takahe-db/takahe - TAKAHE_CACHES_DEFAULT=redis://redis:6379/0 - TAKAHE_MEDIA_BACKEND=local://www/media/ - TAKAHE_MEDIA_ROOT=/www/media/ - TAKAHE_USE_PROXY_HEADERS=true - TAKAHE_STATOR_CONCURRENCY=4 - TAKAHE_STATOR_CONCURRENCY_PER_MODEL=2 - TAKAHE_DEBUG=${NEODB_DEBUG:-False} - TAKAHE_WEB_SERVER=takahe-web:8000 restart: "on-failure" volumes: - ${NEODB_DATA:-../data}/neodb-media:/www/m - ${NEODB_DATA:-../data}/takahe-media:/www/media - ${NEODB_DATA:-../data}/takahe-cache:/www/cache - ${NEODB_DATA:-../data}/www-root:/www/root # - ${NEODB_DATA:-../data}/log:/var/log/nginx depends_on: - redis - neodb-db - typesense - takahe-db services: redis: image: redis:alpine # ports: # - "16379:6379" command: redis-server --save 60 1 --loglevel warning volumes: - ${NEODB_DATA:-../data}/redis:/data typesense: image: typesense/typesense:0.25.0 restart: "on-failure" # healthcheck: # test: ['CMD', 'curl', '-vf', 'http://127.0.0.1:8108/health'] # ports: # - "18108:8108" environment: GLOG_minloglevel: 2 volumes: - ${NEODB_DATA:-../data}/typesense:/data command: '--data-dir /data --api-key=eggplant' neodb-db: image: postgres:14-alpine healthcheck: test: ['CMD', 'pg_isready', '-U', 'neodb'] volumes: - ${NEODB_DATA:-../data}/neodb-db:/var/lib/postgresql/data # ports: # - "15432:5432" environment: - POSTGRES_DB=neodb - POSTGRES_USER=neodb - POSTGRES_PASSWORD=aubergine takahe-db: image: postgres:14-alpine healthcheck: test: ['CMD', 'pg_isready', '-U', 'takahe'] volumes: - ${NEODB_DATA:-../data}/takahe-db:/var/lib/postgresql/data # ports: # - "16432:5432" environment: - POSTGRES_DB=takahe - POSTGRES_USER=takahe - POSTGRES_PASSWORD=aubergine migration: <<: *neodb-service restart: "no" command: /bin/neodb-init depends_on: neodb-db: condition: service_healthy typesense: condition: service_started redis: condition: service_started takahe-db: condition: service_healthy neodb-web: <<: *neodb-service # ports: # - "18000:8000" command: /neodb/.venv/bin/gunicorn boofilsic.wsgi -w ${NEODB_WEB_WORKER_NUM:-8} --preload -b 0.0.0.0:8000 healthcheck: test: ['CMD', 'wget', '-qO/tmp/test', 'http://127.0.0.1:8000/nodeinfo/2.0/'] depends_on: migration: condition: service_completed_successfully neodb-worker: <<: *neodb-service command: /neodb/.venv/bin/python /neodb/manage.py rqworker --with-scheduler import export mastodon fetch crawl ap depends_on: migration: condition: service_completed_successfully neodb-worker-extra: <<: *neodb-service command: /neodb/.venv/bin/python /neodb/manage.py rqworker --with-scheduler fetch crawl ap depends_on: migration: condition: service_completed_successfully takahe-web: <<: *neodb-service # ports: # - "19000:8000" command: /takahe/.venv/bin/gunicorn --chdir /takahe takahe.wsgi -w ${TAKAHE_WEB_WORKER_NUM:-8} --preload -b 0.0.0.0:8000 healthcheck: test: ['CMD', 'wget', '-qO/tmp/test', 'http://127.0.0.1:8000/nodeinfo/2.0/'] depends_on: migration: condition: service_completed_successfully takahe-stator: <<: *neodb-service command: /takahe/.venv/bin/python /takahe/manage.py runstator depends_on: migration: condition: service_completed_successfully nginx: <<: *neodb-service user: "root:root" command: nginx-start depends_on: takahe-web: condition: service_started neodb-web: condition: service_started ports: - "${NEODB_PORT:-8000}:8000" shell: <<: *neodb-service command: bash profiles: ["tools"] root: <<: *neodb-service command: bash profiles: ["tools"] user: "root:root"