# Copyright 2021 The Go 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.4'

x-database-variables: &database-variables
  GO_DISCOVERY_DATABASE_HOST: db
  GO_DISCOVERY_DATABASE_NAME: ${GO_DISCOVERY_DATABASE_NAME:-discovery-db}
  GO_DISCOVERY_DATABASE_PASSWORD: ${GO_DISCOVERY_DATABASE_PASSWORD:-postgres}
  GO_DISCOVERY_DATABASE_USER: ${GO_DISCOVERY_DATABASE_USER:-postgres}

x-go-variables: &go-variables
  GOMODCACHE: /gomodcache
  GO_DISCOVERY_CONFIG_DYNAMIC:
  GO_DISCOVERY_LOG_LEVEL: ${GO_DISCOVERY_LOG_LEVEL:-info}
  GO_DISCOVERY_SERVE_STATS: "true"
  GO_DISCOVERY_VULN_DB:

services:
  allbash:
    # Allocate a pseudo-tty, which sets the TERM
    # environment variable to xterm.
    # See
    # https://docs.docker.com/engine/reference/run/#env-environment-variables and
    # https://www.gnu.org/software/gettext/manual/html_node/The-TERM-variable.html.
    # This is necessary because devtools/lib.sh uses tput.
    tty:
      true
    # allbash depends only on db, since the Go tests will set up its own
    # test databases.
    depends_on:
      - db
     # This should match the version we are using on Cloud Run.
    image: golang:1.21rc3
    environment:
      <<: [*database-variables, *go-variables]
      GO_DISCOVERY_TESTDB: ${GO_DISCOVERY_TESTDB:-"true"}
      # TERM is set to xterm-256color for use by devtools/lib.sh.
      TERM: xterm-256color
      WAITFORIT_TIMEOUT: 300
    entrypoint: go run ./devtools/cmd/wait_available db:5432 -- ./all.bash
    volumes:
      - ../../:/pkgsite
    working_dir: /pkgsite
  searchtest:
    image: golang:1.21rc3
    depends_on:
      - frontend
    environment:
      <<: [*database-variables, *go-variables]
      WAITFORIT_TIMEOUT: 300
    entrypoint: go run ./devtools/cmd/wait_available frontend:8080 -- go run
    command: "tests/search/main.go -frontend http://frontend:8080"
    volumes:
      - ../../:/pkgsite
    working_dir: /pkgsite
  api:
    image: golang:1.21rc3
    depends_on:
      - frontend
    environment:
      <<: *go-variables
      WAITFORIT_TIMEOUT: 300
    entrypoint: go run ./devtools/cmd/wait_available frontend:8080 -- go run
    command: "tests/api/main.go -frontend http://frontend:8080 -all compare "
    volumes:
      - ../../:/pkgsite
    working_dir: /pkgsite
  frontend:
     # This should match the version we are using on AppEngine.
    image: golang:1.21rc3
    depends_on:
      - db
    command: bash -c "
        go run ./devtools/cmd/wait_available db:5432 --
          go run ./devtools/cmd/db/main.go create &&
          go run ./devtools/cmd/db/main.go migrate &&
          go run ./cmd/frontend -host=0.0.0.0:8080"
    environment:
      <<: [*database-variables, *go-variables]
      PORT: 8080
      WAITFORIT_TIMEOUT: 300
    volumes:
      - ../../:/pkgsite
      - gomodcache:/gomodcache
    working_dir: /pkgsite
  seeddb:
     # This should match the version we are using on Cloud Run.
    image: golang:1.21rc3
    depends_on:
      - db
    # Note: technically we should check that migrations have completed before
    # running seeddb, but in general, migrations will have completed by the
    # time seeddb runs. If this ends up being flaky, we should add a check here.
    command: bash -c "
        echo GO_DISCOVERY_CONFIG_DYNAMIC=$GO_DISCOVERY_CONFIG_DYNAMIC &&
        go run ./devtools/cmd/wait_available db:5432 --
          go run ./devtools/cmd/db/main.go create &&
          go run ./devtools/cmd/db/main.go migrate &&
          go run ./devtools/cmd/seeddb/main.go -seed ${GO_DISCOVERY_SEED_DB_FILE:-seed.txt}"
    environment:
      <<: [*database-variables, *go-variables]
      WAITFORIT_TIMEOUT: 300
    volumes:
      - ../../:/pkgsite
      - gomodcache:/gomodcache
    working_dir: /pkgsite
  db:
    image: postgres:11.12
    environment:
      <<: *database-variables
      LANG: C
      # GO_DISCOVERY_DATABASE* variables are set so that this docker file can
      # be used for local development.
      POSTGRES_DB: ${GO_DISCOVERY_DATABASE_NAME:-discovery-db}
      POSTGRES_PASSWORD: ${GO_DISCOVERY_DATABASE_PASSWORD:-postgres}
      POSTGRES_USER: ${GO_DISCOVERY_DATABASE_USER:-postgres}
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - 127.0.0.1:5432:5432
  nodejs:
    image: node:14.17.0
    environment:
      # Use the values set on the host machine environment.
      - CI
      # GO_DISCOVERY_E2E_* variables are used by the deployment script.
      - GO_DISCOVERY_E2E_AUTHORIZATION
      - GO_DISCOVERY_E2E_BASE_URL
      - GO_DISCOVERY_E2E_CHROME_URL=ws://chrome:${GO_DISCOVERY_E2E_TEST_PORT:-3000}
      - GO_DISCOVERY_E2E_QUOTA_BYPASS
      - GO_DISCOVERY_E2E_ENVIRONMENT
      - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
    volumes:
      - ../../:/pkgsite
    working_dir: /pkgsite
  chromedp:
    # This should match the version we are using in tests/screentest/run.sh.
    image: chromedp/headless-shell:97.0.4692.71
    shm_size: 8G
  go:
     # This should match the version we are using on Cloud Run.
    image: golang:1.21rc3
    entrypoint: go
    environment:
      <<: [*database-variables, *go-variables]
    volumes:
      - ../../:/pkgsite
      - gomodcache:/gomodcache
    working_dir: /pkgsite
volumes:
  gomodcache:
  pgdata:
