# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

version: "3"
services:
  ##############################################################################drone
  conf_creator:
    container_name: conf-creator
    image: ${SATLAB_REGISTRY_URI:-gcr.io/satlab-images}/conf_creator:${CONF_CREATOR:-release}
    labels:
      - "skip.while.pruning.docker.system=yes"
    volumes:
      - nginx_configs:/mnt/conf/nginx:rw
  ##############################################################################drone
  drone:
    container_name: drone
    image: &drone_image ${SATLAB_REGISTRY_URI:-gcr.io/satlab-images}/drone:${SATLAB_DRONE:-release}
    environment:
      - DOCKER_DRONE_QUEEN_SERVICE=drone-queen-prod.appspot.com
      - DOCKER_DRONE_SWARMING_SERVER_URL=https://chromeos-swarming.appspot.com
      - DOCKER_DRONE_ADMIN_SERVICE=chromeos-skylab-bot-fleet.appspot.com
      - DOCKER_DRONE_INVENTORY_ENVIRONMENT=prod
      - DOCKER_DRONE_TKO_INSTANCES=google.com:chromeos-lab:us-central1:tko
      - DOCKER_DRONE_AGENT_DUT_CAPACITY=10
      - DOCKER_DRONE_LOG_PROJECT=drone-queen-prod
      - DOCKER_DRONE_IMAGE=*drone_image
      - DOCKER_DRONE_INVENTORY_SERVICE=cros-lab-inventory.appspot.com
      - DOCKER_DRONE_UFS_SERVICE=ufs.api.cr.dev
      - DOCKER_DRONE_AGENT_HIVE=${DRONE_HOSTNAME:-satlab-drone}
      - DOCKER_DRONE_LABPACK_DIR=/usr/local/labpack
      - DOCKER_DRONE_CACHESERVER_IP=192.168.100.1
      - SERVOD_CONTAINER_LABEL=release
      - DOCKER_SERVOD_DEBUG_MODE=0
      - DOCKER_DEFAULT_NETWORK=default_satlab
    privileged: true
    hostname: ${DRONE_HOSTNAME:-satlab-drone}
    restart: always
    volumes:
      - ssp:/usr/local/autotest/containers/ssp_volume:rw
      - service_accounts:/creds/service_accounts:rw
      - /var/run/docker.sock:/var/run/docker.sock:rw
      - /var/run/docker.sock:/var/docker.sock:rw
      - servod_profile:/var/servod/profile/:rw
    # TODO (prasadv): Make static ip addresses higher numbers
    # so that the lower number are available for dhcp to assign it
    # to dynamically created containers such as servod container
    networks:
      satlab:
        ipv4_address: 192.168.100.10
    dns:
      - 192.168.100.51
    depends_on:
      - dns
      - satlab_secrets
  ##############################################################################dns
  dns:
    container_name: dns
    image: ${COMMON_CORE_URI:-gcr.io/chromeos-partner-moblab}/moblab-dns:${DNS:-release}
    restart: unless-stopped
    volumes:
        - logs:/var/log/
        - dut_hosts:/etc/dut_hosts:rw
    command: ['/usr/sbin/dnsmasq', '--no-daemon', '-u', 'moblab', '-g', 'moblab', '-H', '/etc/dut_hosts/hosts']
    networks:
      satlab:
        ipv4_address: 192.168.100.51
  ##############################################################################gsa_server
  gsa_server:
    container_name: gsa_server
    image: ${SATLAB_REGISTRY_URI:-gcr.io/satlab-images}/gsa_server:${GSA_SERVER:-release}
    environment:
      - BOTO_CONFIG=/home/chromeos-test/boto_key/.boto
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:rw
      - images:/home/chromeos-test/images
      - boto_file:/home/chromeos-test/boto_key
    command: ['python', '-m', 'gs_archive_server', '-p', '8887', '-c', '192.168.100.3:8082', '-b', '0.0.0.0']
    networks:
      satlab:
        ipv4_address: 192.168.100.2
    dns:
      - 192.168.100.51
    depends_on:
      - dns
      - satlab_secrets
  ##############################################################################ngix
  nginx:
    container_name: nginx
    image: ${SATLAB_REGISTRY_URI:-gcr.io/satlab-images}/nginx:${NGINX:-release}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:rw
      - /var/logs/nginx:/var/log/nginx
      - cache:/var/cache/nginx
      - nginx_configs:/mnt/conf/nginx:ro
    ports:
      - "8082:8082"
    command: ['nginx', '-g', 'daemon off;', '-c', '/mnt/conf/nginx/nginx.conf']
    networks:
      satlab:
        ipv4_address: 192.168.100.3
    dns:
      - 192.168.100.51
    extra_hosts:
        - "cacheserver:192.168.100.1"
    depends_on:
      - conf_creator
      - dns
      - gsa_server
  ##############################################################################satlab-secrets
  satlab_secrets:
    container_name: satlab_secrets
    image: ${SATLAB_REGISTRY_URI:-gcr.io/satlab-images}/satlab_secrets:${SATLAB_SECRETS:-release}
    labels:
      - "skip.while.pruning.docker.system=yes"
    volumes:
      - service_accounts:/creds/service_accounts
      - boto_file:/boto_file
  ##############################################################################volumes
  openssh_server:
    container_name: openssh_server
    image: ${SATLAB_REGISTRY_URI:-gcr.io/satlab-images}/openssh_server:${OPENSSH_SERVER:-release}
    network_mode: host
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - SUDO_ACCESS=false
      - USER_NAME=chromeos-test
    ports:
      - "2222:2222"
    dns:
      - 192.168.100.51
  ##############################################################################volumes
volumes:
    logs: {}
    images: {}
    cache: {}
    dut_hosts: {}
    nginx_configs: {}
    service_accounts: {}
    boto_file: {}
    servod_profile: {}
    satlab_keys:
      external: True
    ssp: {}
  ##############################################################################networks
networks:
  satlab:
    ipam:
      driver: default
      config:
        - subnet: "192.168.100.0/24"
