version: '3' services: ######################### # Reverse proxy ######################### nginx: image: jonasal/nginx-certbot:3.1.2-nginx1.21.6-alpine restart: ${RESTART} volumes: - ./default.conf:/etc/nginx/user_conf.d/default.conf:ro - nginx-cache:/var/cache/nginx/data-fair - nginx-letsencrypt:/etc/letsencrypt environment: - CERTBOT_EMAIL=${CONTACT_EMAIL} ports: - 80:80 - 443:443 ######################### # HTTP services ######################### data-fair: image: ghcr.io/data-fair/data-fair:3 restart: ${RESTART} volumes: - data-fair-data:/data depends_on: - mongo - elasticsearch environment: - MODE=server - DEBUG=upgrade* - PUBLIC_URL=${BASE_URL}/data-fair - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - OPENAPI_VIEWER_URL=${BASE_URL}/api-doc/ - THUMBOR_URL=${BASE_URL}/thumbor/ - THUMBOR_KEY=${SECRET} - CAPTURE_URL=${BASE_URL}/capture/ - NOTIFY_URL=${BASE_URL}/notify - PRIVATE_NOTIFY_URL=http://notify:8080 - MONGO_URL=mongodb://mongo:27017/data-fair - ES_HOST=elasticsearch:9200 - SECRET_IDENTITIES=${SECRET} - SECRET_NOTIFICATIONS=${SECRET} - EXTRA_NAV_ITEMS=${EXTRA_NAV_ITEMS} - EXTRA_ADMIN_NAV_ITEMS=${EXTRA_ADMIN_NAV_ITEMS} data-fair-worker: image: ghcr.io/data-fair/data-fair:3 restart: ${RESTART} volumes: - data-fair-data:/data depends_on: - mongo - elasticsearch environment: - MODE=worker - DEBUG=upgrade* - PUBLIC_URL=${BASE_URL}/data-fair - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - OPENAPI_VIEWER_URL=${BASE_URL}/api-doc/ - THUMBOR_URL=${BASE_URL}/thumbor/ - THUMBOR_KEY=${SECRET} - CAPTURE_URL=${BASE_URL}/capture/ - NOTIFY_URL=${BASE_URL}/notify - PRIVATE_NOTIFY_URL=http://notify:8080 - MONGO_URL=mongodb://mongo:27017/data-fair - ES_HOST=elasticsearch:9200 - SECRET_NOTIFICATIONS=${SECRET} simple-directory: image: ghcr.io/data-fair/simple-directory:7 restart: ${RESTART} volumes: - simple-directory-security:/webapp/security depends_on: - mongo environment: - PUBLIC_URL=${BASE_URL}/simple-directory - NOTIFY_URL=${BASE_URL}/notify - PRIVATE_NOTIFY_URL=http://notify:8080 - STORAGE_MONGO_URL=mongodb://mongo:27017/simple-directory - ADMINS=${ADMINS} - HOME_PAGE=${BASE_URL} - CONTACT=${CONTACT_EMAIL} - MAILS_TRANSPORT=${MAILS_TRANSPORT} - MAILS_FROM=${CONTACT_EMAIL} - MAILDEV_ACTIVE=${MAILDEV_ACTIVE} - MAILDEV_URL=${BASE_URL}/mails/ - SECRET_SENDMAILS=${SECRET} - SECRET_IDENTITIES=${SECRET} - SECRET_NOTIFICATIONS=${SECRET} - ROLES_DEFAULTS=["admin","contrib","user"] - PASSWORDLESS=false - USER_SELF_DELETE=true - LIST_ENTITIES_MODE=admin - MANAGE_DEPARTMENTS=true portals: image: ghcr.io/data-fair/portals:1 restart: always volumes: - portals-data:/webapp/data environment: - PUBLIC_URL=${BASE_URL}/portals - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - DATAFAIR_URL=${BASE_URL}/data-fair - NOTIFY_URL=${BASE_URL}/notify - PRIVATE_NOTIFY_URL=http://notify:8080 - THUMBOR_URL=${BASE_URL}/thumbor - THUMBOR_KEY=${SECRET} - OPENAPIVIEWER_URL=${BASE_URL}/api-doc/ - MONGO_HOST=mongo - SECRET_IDENTITIES=${SECRET} processings: image: ghcr.io/data-fair/processings:1 restart: always volumes: - processings-data:/data environment: - MODE=server - PUBLIC_URL=${BASE_URL}/processings - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - DATAFAIR_URL=${BASE_URL}/data-fair - NOTIFY_URL=${BASE_URL}/notify - PRIVATE_NOTIFY_URL=http://notify:8080 - OPENAPIVIEWER_URL=${BASE_URL}/api-doc/ - MAILS_TRANSPORT=${MAILS_TRANSPORT} - MONGO_HOST=mongo - DATA_FAIR_ADMIN_MODE=true - DATA_FAIR_API_KEY=${DATA_FAIR_ADMIN_API_KEY} - SECRET_IDENTITIES=${SECRET} processings-worker: image: ghcr.io/data-fair/processings:1 restart: always volumes: - processings-data:/data environment: - MODE=worker - PUBLIC_URL=${BASE_URL}/processings - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - DATAFAIR_URL=${BASE_URL}/data-fair - NOTIFY_URL=${BASE_URL}/notify - PRIVATE_NOTIFY_URL=http://notify:8080 - OPENAPIVIEWER_URL=${BASE_URL}/api-doc/ - MAILS_TRANSPORT=${MAILS_TRANSPORT} - MONGO_HOST=mongo - DATA_FAIR_ADMIN_MODE=true - DATA_FAIR_API_KEY=${DATA_FAIR_ADMIN_API_KEY} metrics: image: ghcr.io/data-fair/metrics:0 restart: always environment: - PUBLIC_URL=${BASE_URL}/metrics - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - MONGO_URL=mongodb://mongo:27017/processings - SYSLOG_SECRET=syslog_secret openapi-viewer: image: ghcr.io/data-fair/openapi-viewer:1 restart: 'always' capture: image: ghcr.io/data-fair/capture:3 restart: 'always' shm_size: '1gb' security_opt: - seccomp:./capture-seccomp.json environment: - PUBLIC_URL=${BASE_URL}/capture - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - ONLY_SAME_HOST=true notify: image: ghcr.io/data-fair/notify:3 restart: 'always' depends_on: - mongo environment: - PUBLIC_URL=${BASE_URL}/notify - DIRECTORY_URL=${BASE_URL}/simple-directory - PRIVATE_DIRECTORY_URL=http://simple-directory:8080 - OPENAPI_VIEWER_URL=${BASE_URL}/api-doc/ - MONGO_URL=mongodb://mongo:27017/notify - SECRET_IDENTITIES=${SECRET} - SECRET_NOTIFICATIONS=${SECRET} - SECRET_SENDMAILS=${SECRET} thumbor: image: apsl/thumbor:6.7.0 restart: 'always' volumes: - thumbor-data:/data environment: - SECURITY_KEY=${SECRET} - STORAGE_EXPIRATION_SECONDS=600 - MAX_AGE=600 ######################### # Dependencies ######################### elasticsearch: image: ghcr.io/data-fair/elasticsearch:7.17.12 restart: ${RESTART} volumes: - elasticsearch-data:/usr/share/elasticsearch/data environment: - discovery.type=single-node - xpack.security.enabled=false - ingest.geoip.downloader.enabled=false mongo: image: mongo:4.4 restart: ${RESTART} volumes: - mongo-data:/data/db volumes: data-fair-data: driver: local simple-directory-security: driver: local portals-data: driver: local processings-data: driver: local thumbor-data: driver: local elasticsearch-data: driver: local mongo-data: driver: local nginx-cache: driver: local nginx-letsencrypt: driver: local