compose.ymlΒΆ

x-node: &node
  image: infinito-swarm-node
  build:
    context: .
    args:
      INFINITO_IMAGE: "${INFINITO_IMAGE:?run make dotenv / build the distro image first}"
  privileged: true
  cgroup: host
  pids_limit: ${INFINITO_SWARM_NODE_PIDS_LIMIT:?run make dotenv first}
  security_opt:
    - seccomp=unconfined
    - apparmor=unconfined
  environment:
    - DM_DISABLE_UDEV=1
  tmpfs:
    - /run
    - /run/lock
  labels:
    - "${INFINITO_SWARM_TEST_LABEL:?run utils/topology/export.sh first}="
  volumes:
    - /sys/fs/cgroup:/sys/fs/cgroup:rw
    - /lib/modules:/lib/modules:ro
  extra_hosts:
    - "${MGR:?run utils/topology/export.sh first}:${INFINITO_SWARM_MGR_IP:?run utils/topology/export.sh first}"
    - "${WRK1:?run utils/topology/export.sh first}:${INFINITO_SWARM_WRK1_IP:?run utils/topology/export.sh first}"
    - "${WRK2:?run utils/topology/export.sh first}:${INFINITO_SWARM_WRK2_IP:?run utils/topology/export.sh first}"
    - "${NFS_SERVER:?run utils/topology/export.sh first}:${INFINITO_SWARM_NFS_IP:?run utils/topology/export.sh first}"
    - "${BACKUP_NODE:?run utils/topology/export.sh first}:${INFINITO_SWARM_BACKUP_IP:?run utils/topology/export.sh first}"

services:
  nfs-server:
    <<: *node
    container_name: "${NFS_SERVER:?run utils/topology/export.sh first}"
    hostname: "${NFS_SERVER:?run utils/topology/export.sh first}"
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:rw
      - /lib/modules:/lib/modules:ro
      - "nfs-export:${NFS_EXPORT_BASE:?run utils/topology/export.sh first}"
    networks:
      lab:
        ipv4_address: "${INFINITO_SWARM_NFS_IP:?run utils/topology/export.sh first}"

  swarm-mgr-01:
    <<: *node
    container_name: "${MGR:?run utils/topology/export.sh first}"
    hostname: "${MGR:?run utils/topology/export.sh first}"
    networks:
      lab:
        ipv4_address: "${INFINITO_SWARM_MGR_IP:?run utils/topology/export.sh first}"

  swarm-wrk-01:
    <<: *node
    container_name: "${WRK1:?run utils/topology/export.sh first}"
    hostname: "${WRK1:?run utils/topology/export.sh first}"
    networks:
      lab:
        ipv4_address: "${INFINITO_SWARM_WRK1_IP:?run utils/topology/export.sh first}"

  swarm-wrk-02:
    <<: *node
    container_name: "${WRK2:?run utils/topology/export.sh first}"
    hostname: "${WRK2:?run utils/topology/export.sh first}"
    networks:
      lab:
        ipv4_address: "${INFINITO_SWARM_WRK2_IP:?run utils/topology/export.sh first}"

  backup-host:
    <<: *node
    container_name: "${BACKUP_NODE:?run utils/topology/export.sh first}"
    hostname: "${BACKUP_NODE:?run utils/topology/export.sh first}"
    profiles: ["drill"]
    networks:
      lab:
        ipv4_address: "${INFINITO_SWARM_BACKUP_IP:?run utils/topology/export.sh first}"

volumes:
  nfs-export:

networks:
  lab:
    name: "${SWARM_LAB_NETWORK:?run utils/topology/export.sh first}"
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: "1400"
    ipam:
      config:
        - subnet: "${INFINITO_SWARM_LAB_SUBNET:?run utils/topology/export.sh first}"