x-userdata-volume: &userdata-volume type: bind source: ${USERDATA_DIRECTORY} target: /userdata x-comics-volume: &comics-volume type: bind source: ${COMICS_DIRECTORY} target: /comics services: core-services: build: # context: https://github.com/rishighan/threetwo-core-service.git context: ./ dockerfile: Dockerfile image: frishi/threetwo-core-service container_name: core-services ports: - "3000:3000" - "3001:3001" depends_on: - db - redis - elasticsearch - kafka1 - zoo1 environment: name: core-services SERVICES: api,library,imagetransformation,opds,search,settings,jobqueue,socket,torrentjobs env_file: docker-compose.env volumes: - *comics-volume - *userdata-volume networks: - proxy zoo1: image: confluentinc/cp-zookeeper:7.3.2 hostname: zoo1 container_name: zoo1 ports: - "2181:2181" environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_SERVER_ID: 1 ZOOKEEPER_SERVERS: zoo1:2888:3888 networks: - proxy kafka1: image: confluentinc/cp-kafka:7.3.2 hostname: kafka1 container_name: kafka1 ports: - "9092:9092" - "29092:29092" - "9999:9999" environment: KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:19092,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1} :9092,DOCKER://host.docker.internal:29092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181" KAFKA_BROKER_ID: 1 KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state. change.logger=INFO" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_JMX_PORT: 9999 KAFKA_JMX_HOSTNAME: ${DOCKER_HOST_IP:-127.0.0.1} KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" depends_on: - zoo1 networks: - proxy db: image: "mongo:latest" container_name: database networks: - proxy ports: - "27017:27017" volumes: - "mongodb_data:/bitnami/mongodb" redis: image: "bitnami/redis:latest" container_name: redis hostname: redis environment: ALLOW_EMPTY_PASSWORD: "yes" networks: - proxy ports: - "6379:6379" elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2 container_name: elasticsearch environment: - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "xpack.security.enabled=true" - "xpack.security.authc.api_key.enabled=true" - "ELASTIC_PASSWORD=password" ulimits: memlock: soft: -1 hard: -1 ports: - 9200:9200 networks: - proxy networks: proxy: external: true volumes: mongodb_data: driver: local elasticsearch: driver: local