diff --git a/komodo/compose.yaml b/komodo/compose.yaml new file mode 100644 index 0000000..615eddd --- /dev/null +++ b/komodo/compose.yaml @@ -0,0 +1,113 @@ +################################ +# 🦎 KOMODO COMPOSE - MONGO 🦎 # +################################ + +## This compose file will deploy: +## 1. MongoDB +## 2. Komodo Core +## 3. Komodo Periphery + +services: + komodo-mongo: + image: mongo + container_name: komodo-mongo + labels: + - komodo.skip= # Prevent Komodo from stopping with StopAllContainers + command: --quiet --wiredTigerCacheSizeGB 0.25 + restart: unless-stopped + logging: + driver: ${COMPOSE_LOGGING_DRIVER:-local} + networks: + - default + # ports: + # - 27017:27017 + env_file: .env + volumes: + - mongo-data:/data/db + - mongo-config:/data/configdb + environment: + MONGO_INITDB_ROOT_USERNAME: ${KOMODO_DB_USERNAME} + MONGO_INITDB_ROOT_PASSWORD: ${KOMODO_DB_PASSWORD} + + komodo-core: + image: ghcr.io/mbecker20/komodo:${COMPOSE_KOMODO_IMAGE_TAG:-latest} + container_name: komodo-core + labels: + - komodo.skip= # Prevent Komodo from stopping with StopAllContainers + - traefik.enable=true + - traefik.http.routers.komodo-core-secure.entrypoints=https + - traefik.http.routers.komodo-core-secure.rule=Host(`komo.YOURDOMAIN.com`) # Replace YOURDOMAIN + - traefik.http.routers.komodo-core-secure.tls=true + - traefik.http.routers.komodo-core-secure.service=komodo-core + - traefik.http.services.komodo-core.loadbalancer.server.port=9120 + - traefik.docker.network=proxy + restart: unless-stopped + depends_on: + - komodo-mongo + logging: + driver: ${COMPOSE_LOGGING_DRIVER:-local} + networks: + - default + - proxy + ports: + - 9120:9120 + env_file: .env + environment: + KOMODO_DATABASE_ADDRESS: komodo-mongo:27017 + KOMODO_DATABASE_USERNAME: ${KOMODO_DB_USERNAME} + KOMODO_DATABASE_PASSWORD: ${KOMODO_DB_PASSWORD} + volumes: + ## Core cache for repos for latest commit hash / contents + - repo-cache:/repo-cache + ## Store sync files on server + - ./syncs:/syncs + ## Optionally mount a custom core.config.toml + # - /path/to/core.config.toml:/config/config.toml + ## Allows for systemd Periphery connection at + ## "http://host.docker.internal:8120" + # extra_hosts: + # - host.docker.internal:host-gateway + + ## Deploy Periphery container using this block, + ## or deploy the Periphery binary with systemd using + ## https://github.com/mbecker20/komodo/tree/main/scripts + komodo-periphery: + image: ghcr.io/mbecker20/periphery:${COMPOSE_KOMODO_IMAGE_TAG:-latest} + container_name: komodo-periphery + labels: + - komodo.skip= # Prevent Komodo from stopping with StopAllContainers + restart: unless-stopped + logging: + driver: ${COMPOSE_LOGGING_DRIVER:-local} + networks: + - default + ports: + - 8120:8120 + env_file: .env + environment: + PERIPHERY_REPO_DIR: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/repos + PERIPHERY_STACK_DIR: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/stacks + PERIPHERY_SSL_KEY_FILE: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/ssl/key.pem + PERIPHERY_SSL_CERT_FILE: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/ssl/cert.pem + volumes: + ## Mount external docker socket + - /var/run/docker.sock:/var/run/docker.sock + ## Allow Periphery to see processes outside of container + - /proc:/proc + ## Specify the Periphery agent root directory. + ## Must be the same inside and outside the container, + ## or docker will get confused. See https://github.com/mbecker20/komodo/discussions/180. + ## Default: /etc/komodo. + - ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}:${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo} + +volumes: + # Mongo + mongo-data: + mongo-config: + # Core + repo-cache: + +networks: + default: {} + proxy: + external: true