version: '3' services: db: image: postgres:12.9 environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} healthcheck: test: [ "CMD-SHELL", "pg_isready -U postgres" ] interval: 5s timeout: 5s retries: 5 networks: - db_net restart: unless-stopped volumes: - db_data:/var/lib/postgresql/data search: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0 container_name: search environment: cluster.name: fusionauth bootstrap.memory_lock: "true" discovery.type: single-node ES_JAVA_OPTS: ${ES_JAVA_OPTS} healthcheck: test: [ "CMD", "curl", "--fail", "--write-out", "'HTTP %{http_code}'", "--silent", "--output", "/dev/null", "http://localhost:9200/" ] interval: 5s timeout: 5s retries: 5 networks: - search_net restart: unless-stopped volumes: - search_data:/usr/share/elasticsearch/data fusionauth: image: fusionauth/fusionauth-app:latest depends_on: db: condition: service_healthy search: condition: service_healthy environment: DATABASE_URL: jdbc:postgresql://db:5432/fusionauth DATABASE_ROOT_USERNAME: ${POSTGRES_USER} DATABASE_ROOT_PASSWORD: ${POSTGRES_PASSWORD} DATABASE_USERNAME: ${DATABASE_USERNAME} DATABASE_PASSWORD: ${DATABASE_PASSWORD} FUSIONAUTH_APP_MEMORY: ${FUSIONAUTH_APP_MEMORY} FUSIONAUTH_APP_RUNTIME_MODE: development FUSIONAUTH_APP_URL: http://fusionauth:9011 SEARCH_SERVERS: http://search:9200 SEARCH_TYPE: elasticsearch FUSIONAUTH_APP_KICKSTART_FILE: /usr/local/fusionauth/kickstarts/kickstart.json env_file: - ./fusionauth.env volumes: - fa-config:/usr/local/fusionauth/config - ./kickstart:/usr/local/fusionauth/kickstarts networks: - db_net - search_net - default restart: unless-stopped ports: - 9011:9011 redis_main: image: redis:5 ports: - "6381:6379" volumes: - ../redis/conf/redis-enketo-main.conf:/etc/redis/redis.conf:ro - ./redis_main_data/:/data/ restart: unless-stopped redis_cache: image: redis:5 ports: - "6382:6379" volumes: - ../redis/conf/redis-enketo-cache.conf:/etc/redis/redis.conf:ro - ./redis_cache_data/:/data/ restart: unless-stopped tsdb: container_name: tsdb image: timescale/timescaledb:2.0.0-pg12 restart: always ports: - "5432:5432" volumes: - ./pgdata:/var/lib/postgresql/data environment: POSTGRES_USER: timescaledb POSTGRES_PASSWORD: postgrespassword gql: image: hasura/graphql-engine:latest ports: - "8080:8080" volumes: - ./data/migrations:/hasura-migrations - ./data/metadata:/hasura-metadata depends_on: - "tsdb" restart: always environment: - HASURA_GRAPHQL_DATABASE_URL=postgres://timescaledb:postgrespassword@tsdb:5432/postgres?sslmode=disable - HASURA_GRAPHQL_ENABLE_CONSOLE=true # set to "false" to disable console - HASURA_GRAPHQL_DEV_MODE=true - HASURA_GRAPHQL_ENABLED_LOG_TYPES=startup,http-log,webhook-log,websocket-log,query-log - HASURA_GRAPHQL_MIGRATIONS_DISABLE_TRANSACTION=true - HASURA_GRAPHQL_CONSOLE_ASSETS_DIR=/srv/console-assets - HASURA_GRAPHQL_ADMIN_SECRET=myadminsecretkey - HASURA_GRAPHQL_JWT_SECRET={"type":"RS256","jwk_url":"http://fusionauth:9011/.well-known/jwks.json"} minio: image: minio/minio ports: - "9000:9000" - "9001:9001" volumes: - ./mnt/cqube_bucket/minio:/data environment: MINIO_ROOT_USER: ${MINIO_USERNAME} MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD} command: server --console-address ":9001" /data networks: db_net: driver: bridge search_net: driver: bridge default: volumes: db_data: search_data: fa-config: minio_storage: {}