Files
threetwo-docker-compose/docker-compose.amd64.yml
2025-02-26 12:08:04 -05:00

187 lines
4.5 KiB
YAML

x-userdata-volume: &userdata-volume
type: bind
source: ${USERDATA_DIRECTORY:?USERDATA_DIRECTORY not set}
target: /userdata
x-comics-volume: &comics-volume
type: bind
source: ${COMICS_DIRECTORY:?COMICS_DIRECTORY not set}
target: /comics
services:
threetwo:
build:
context: https://github.com/rishighan/threetwo.git
dockerfile: Dockerfile
image: frishi/threetwo
container_name: threetwo-ui
env_file: /mnt/user/appdata/threetwo/docker-compose.env
restart: unless-stopped
ports:
- "5173:5173"
depends_on:
- core-services
- kafka1
- zoo1
- elasticsearch
- db
- redis
networks:
- proxy
metadata-service:
build:
context: https://github.com/rishighan/threetwo-metadata-service.git
image: frishi/threetwo-metadata-service
container_name: metadata-service
ports:
- "3080:3080"
environment:
SERVICES: api,comicvine
env_file: /mnt/user/appdata/threetwo/docker-compose.env
depends_on:
- redis
- kafka1
- zoo1
- elasticsearch
- db
volumes:
- *comics-volume
- *userdata-volume
networks:
- proxy
acquisition-service:
build:
context: https://github.com/rishighan/threetwo-acquisition-service.git
image: frishi/threetwo-acquisition-service
container_name: acquisition-service
ports:
- "3060:3060"
environment:
SERVICES: api,autodownload,comicProcessor,prowlarr,qbittorrent
env_file: /mnt/user/appdata/threetwo/docker-compose.env
depends_on:
- redis
- kafka1
- zoo1
- elasticsearch
- db
volumes:
- *comics-volume
- *userdata-volume
networks:
- proxy
core-services:
build:
context: https://github.com/rishighan/threetwo-core-service.git
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,importqueue,settings,search,socket,imagetransformation,opds
env_file: /mnt/user/appdata/threetwo/docker-compose.env
volumes:
- *comics-volume
- *userdata-volume
networks:
- proxy
db:
image: "mongo:latest" # Switched to amd64-compatible image
container_name: database
networks:
- proxy
ports:
- "27017:27017"
volumes:
- "mongodb_data:/data/db"
redis:
image: "redis:latest" # Using a safe amd64-supported version
container_name: queue
environment:
ALLOW_EMPTY_PASSWORD: "yes"
networks:
- proxy
ports:
- "6379:6379"
zoo1:
image: "zookeeper:3.7.0" # Switched from arm64v8 to standard amd64-compatible image
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: "bitnami/kafka:latest" # Ensures multi-arch support
hostname: kafka1
container_name: kafka1
ports:
- "9092:9092"
- "29092:29092"
- "9999:9999"
environment:
ALLOW_PLAINTEXT_LISTENER: "yes"
KAFKA_CFG_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_CFG_ZOOKEEPER_CONNECT: zoo1:2181
KAFKA_CFG_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_ZOOKEEPER_PROTOCOL: PLAINTEXT
KAFKA_CFG_BROKER_ID: 1
KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_CFG_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_CFG_JMX_PORT: 9999
depends_on:
- zoo1
networks:
- proxy
elasticsearch:
image: "docker.elastic.co/elasticsearch/elasticsearch:7.17.26" # Using amd64-compatible image
container_name: elasticsearch
environment:
- "discovery.type=single-node"
- "xpack.security.enabled=false"
- "xpack.security.authc.api_key.enabled=false"
- "ES_JAVA_OPTS="
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9200:9200"
volumes:
- "elasticsearch:/usr/share/elasticsearch/data"
networks:
- proxy
networks:
proxy:
driver: bridge
volumes:
mongodb_data:
driver: local
elasticsearch:
driver: local