#
# Copyright 2022 The Sigstore Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

services:
  rekor-server:
    build:
      context: .
      target: "test"
    environment:
      TMPDIR: /var/run/attestations # workaround for https://github.com/google/go-cloud/issues/3294
      PUBSUB_EMULATOR_HOST: gcp-pubsub-emulator:8085
    command: [
      "rekor-server",
      "-test.coverprofile=rekor-server.cov",
      "serve",
      "--trillian_log_server.address=trillian-log-server",
      "--trillian_log_server.port=8090",
      "--trillian_log_server.grpc_default_service_config={\"loadBalancingConfig\":[{\"round_robin\":{}}]}",
      "--redis_server.address=redis-server",
      "--redis_server.port=6379",
      "--redis_server.password=test",
      "--rekor_server.address=0.0.0.0",
      "--rekor_server.signer=memory",
      "--enable_attestation_storage",
      "--attestation_storage_bucket=file:///var/run/attestations",
      "--max_request_body_size=32792576",
      "--rekor_server.new_entry_publisher=gcppubsub://projects/test-project/topics/new-entry",
      "--rekor_server.publish_events_json=true",
      "--search_index.storage_provider=${INDEX_BACKEND:-mysql}",
      "--search_index.mysql.dsn=test:zaphod@tcp(mysql:3306)/test",
      ]
    ports:
      - "3000:3000"
      - "2112:2112"
    depends_on:
      - gcp-pubsub-emulator
      - mysql
      - redis-server
      - trillian-log-server
  gcp-pubsub-emulator:
    image: gcp-pubsub-emulator
    ports:
      - "8085:8085"
    command:
      - gcloud
      - beta
      - emulators
      - pubsub
      - start
      - --host-port=0.0.0.0:8085
      - --project=test-project
    healthcheck:
      test: ["CMD", "nc", "-zv", "localhost", "8085"]
      interval: 10s
      timeout: 3s
      retries: 3
      start_period: 10s
