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_IMAGE:-neodb/neodb:main} environment: NEODB_DEBUG: NEODB_SECRET_KEY: NEODB_SITE_NAME: NEODB_SITE_DOMAIN: NEODB_SITE_INTRO: NEODB_SITE_LOGO: NEODB_SITE_ICON: NEODB_USER_ICON: NEODB_SITE_LINKS: NEODB_ADMIN_USERNAMES: NEODB_INVITE_ONLY: NEODB_LOGIN_ENABLE_EMAIL_ONLY: NEODB_LOGIN_MASTODON_WHITELIST: NEODB_MASTODON_CLIENT_SCOPE: NEODB_DISABLE_DEFAULT_RELAY: NEODB_DISABLE_CRON: NEODB_SENTRY_DSN: TAKAHE_SENTRY_DSN: NEODB_DB_URL: ${NEODB_DB_URL:-postgres://neodb:aubergine@neodb-db/neodb} TAKAHE_DB_URL: ${TAKAHE_DB_URL:-postgres://takahe:aubergine@takahe-db/takahe} NEODB_REDIS_URL: ${NEODB_REDIS_URL:-redis://redis:6379/0} NEODB_SEARCH_URL: ${NEODB_SEARCH_URL:-typesense://user:eggplant@typesense:8108/catalog} NEODB_EMAIL_URL: NEODB_EMAIL_FROM: no-reply@${NEODB_SITE_DOMAIN} NEODB_DOWNLOADER_PROXY_LIST: NEODB_DOWNLOADER_BACKUP_PROXY: NEODB_DOWNLOADER_SAVE_DIR: NEODB_MEDIA_ROOT: /www/m NEODB_VENV: /neodb-venv 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: ${TAKAHE_DATABASE_SERVER:-postgres://takahe:aubergine@takahe-db/takahe} TAKAHE_CACHES_DEFAULT: ${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:-True} TAKAHE_VENV: /takahe-venv SPOTIFY_API_KEY: TMDB_API_V3_KEY: GOOGLE_API_KEY: DISCOGS_API_KEY: IGDB_API_CLIENT_ID: IGDB_API_CLIENT_SECRET: DISCORD_WEBHOOKS: SLACK_API_TOKEN: SSL_ONLY: 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 depends_on: - redis - neodb-db - typesense - takahe-db profiles: - production dev-neodb-service: &dev-neodb-service <<: *neodb-service # environment: # NEODB_DEBUG: True volumes: - ${NEODB_DATA:-../data}/www-root:/www/root - ${NEODB_DATA:-../data}/neodb-media:/www/m - ${NEODB_DATA:-../data}/takahe-media:/www/media - ${NEODB_DATA:-../data}/takahe-cache:/www/cache - ${NEODB_DATA:-../data}/nginx-log:/var/log/nginx - ${NEODB_SRC:-.}:/neodb - ${TAKAHE_SRC:-./neodb-takahe}:/takahe profiles: - dev 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.1 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:-/neodb-venv}/bin/gunicorn boofilsic.wsgi -w ${NEODB_WEB_WORKER_NUM:-8} --preload --max-requests 1000 -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-manage rqworker --with-scheduler import export mastodon fetch crawl ap cron depends_on: migration: condition: service_completed_successfully neodb-worker-extra: <<: *neodb-service command: neodb-manage rqworker fetch crawl ap depends_on: migration: condition: service_completed_successfully takahe-web: <<: *neodb-service # ports: # - "19000:8000" command: ${TAKAHE_VENV:-/takahe-venv}/bin/gunicorn --chdir /takahe takahe.wsgi -w ${TAKAHE_WEB_WORKER_NUM:-8} --max-requests 1000 --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-manage runstator depends_on: migration: condition: service_completed_successfully nginx: <<: *neodb-service user: "root:root" command: nginx-start environment: NEODB_WEB_SERVER: neodb-web:8000 TAKAHE_WEB_SERVER: takahe-web:8000 NGINX_CONF: /neodb/misc/nginx.conf.d/neodb.conf 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" dev-neodb-web: <<: *dev-neodb-service command: neodb-manage runserver 0.0.0.0:8000 dev-neodb-worker: <<: *dev-neodb-service command: neodb-manage rqworker --with-scheduler import export mastodon fetch crawl ap cron dev-takahe-web: <<: *dev-neodb-service command: takahe-manage runserver 0.0.0.0:8000 dev-takahe-stator: <<: *dev-neodb-service command: takahe-manage runstator dev-nginx: <<: *dev-neodb-service user: "root:root" command: nginx-start environment: NEODB_WEB_SERVER: dev-neodb-web:8000 TAKAHE_WEB_SERVER: dev-takahe-web:8000 NGINX_CONF: /neodb/misc/nginx.conf.d/neodb-dev.conf depends_on: dev-takahe-web: condition: service_started dev-neodb-web: condition: service_started ports: - "${NEODB_PORT:-8000}:8000" dev-shell: <<: *dev-neodb-service command: bash profiles: ["tools"] dev-root: <<: *dev-neodb-service command: bash profiles: ["tools"] user: "root:root"