version: '3.2'
services:
  fulcio-server:
    image: fulcio_fulcio-server
    command: [
      "fulcio-server",
      "serve",
      "--host=0.0.0.0",
      "--port=5555",
      "--ca=ephemeralca",
      "--ct-log-url=http://ct_server:6962/test",
      ]
    restart: always # keep the server running
    ports:
      - "5555:5555"
    volumes:
      - ./config/config.json:/etc/fulcio-config/config.json:z
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5555/ping"]
      interval: 10s
      timeout: 3s
      retries: 3
      start_period: 5s
    depends_on:
      - dex-idp
  mysql:
    image: gcr.io/trillian-opensource-ci/db_server:3c8193ebb2d7fedb44d18e9c810d0d2e4dbb7e4d
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=password
    restart: always # keep the MySQL server running
    healthcheck:
      test: ["CMD", "/etc/init.d/mysql", "status"]
      interval: 30s
      timeout: 3s
      retries: 3
      start_period: 10s
  ctfe_init:
    build:
      context: .
      dockerfile: Dockerfile.ctfe_init
    depends_on:
      - trillian-log-server
      - fulcio-server
    volumes:
      - ctfeConfig:/etc/config/:rw
  ct_server:
    image: gcr.io/trillian-opensource-ci/ctfe
    volumes:
      - ctfeConfig:/etc/config/:rw
    command: [
        "--log_config" ,"/etc/config/ct_server.cfg",
        "--log_rpc_server", "trillian-log-server:8096",
        "--http_endpoint", "0.0.0.0:6962",
        "--alsologtostderr",
    ]
    restart: always # retry while ctfe_init is running
    depends_on:
      - trillian-log-server
      - trillian-log-signer
      - ctfe_init
    ports:
      - "6962:6962"
  dex-idp:
    image: dexidp/dex:v2.30.0
    user: root
    command: [
      "dex",
      "serve",
      "/etc/config/docker-compose-config.yaml",
      ]
    restart: always # keep the server running
    ports:
      - "8888:8888"
    volumes:
      - ./config/dex:/etc/config/:ro
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8888/auth/healthz"]
      interval: 10s
      timeout: 3s
      retries: 3
      start_period: 5s
  trillian-log-server:
    image: gcr.io/trillian-opensource-ci/log_server
    command: [
      "--storage_system=mysql",
      "--mysql_uri=test:password@tcp(mysql:3306)/test",
      "--rpc_endpoint=0.0.0.0:8096",
      "--http_endpoint=0.0.0.0:8095",
      "--alsologtostderr",
    ]
    restart: always # retry while mysql is starting up
    ports:
      - "8096:8096"
      - "8095:8095"
    depends_on:
      - mysql
  trillian-log-signer:
    image: gcr.io/trillian-opensource-ci/log_signer
    command: [
      "--storage_system=mysql",
      "--mysql_uri=test:password@tcp(mysql:3306)/test",
      "--rpc_endpoint=0.0.0.0:8095",
      "--http_endpoint=0.0.0.0:8097",
      "--force_master",
      "--alsologtostderr",
    ]
    restart: always # retry while mysql is starting up
    ports:
      - "8097:8097"
    depends_on:
      - mysql
volumes:
  ctfeConfig: {}
