# 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'
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 AppEngine.
    image: golang:1.15.5
    environment:
      - GO_DISCOVERY_DATABASE_HOST=db
      - GO_DISCOVERY_DATABASE_NAME=${GO_DISCOVERY_DATABASE_NAME:-"discovery-db"}
      - GO_DISCOVERY_DATABASE_USER=${GO_DISCOVERY_DATABASE_USER:-postgres}
      - GO_DISCOVERY_DATABASE_PASSWORD=${GO_DISCOVERY_DATABASE_PASSWORD:-postgres}
      - GO_DISCOVERY_TESTDB=${GO_DISCOVERY_TESTDB:-true}
      - GOMODCACHE=/gomodcache
      # TERM is set to xterm-256color for use by devtools/lib.sh.
      - TERM=xterm-256color
      - WAITFORIT_TIMEOUT=300
    entrypoint: "./third_party/wait-for-it/wait-for-it.sh db:5432 -- ./all.bash"
    volumes:
      - ../../:/pkgsite
      - $GOPATH/pkg/mod:/gomodcache
    working_dir: /pkgsite
  e2e:
    image: node:14.17.0
    depends_on:
      - chrome
      - frontend
    environment:
      # CI is used for cleaner log output from jest and npm install
      - CI=true
      - GO_DISCOVERY_E2E_BASE_URL=http://frontend:8080
      - GO_DISCOVERY_E2E_CHROME_URL=ws://chrome:3000
      - WAITFORIT_TIMEOUT=300
    entrypoint: ./third_party/wait-for-it/wait-for-it.sh frontend:8080 -- npx jest
    command: e2e
    volumes:
      - ../../:/pkgsite
    working_dir: /pkgsite
  chrome:
    image: browserless/chrome:1.46-chrome-stable
    ports:
      - 3000:3000
    environment:
      - CONNECTION_TIMEOUT=120000
  frontend:
     # This should match the version we are using on AppEngine.
    image: golang:1.15.5
    depends_on:
      - migrate
    command: bash -c "
        ./third_party/wait-for-it/wait-for-it.sh db:5432 --
          go run ./cmd/frontend -host=0.0.0.0:8080"
    environment:
      - GO_DISCOVERY_DATABASE_HOST=db
      - GO_DISCOVERY_DATABASE_NAME=${GO_DISCOVERY_DATABASE_NAME:-"discovery-db"}
      - GO_DISCOVERY_DATABASE_USER=${GO_DISCOVERY_DATABASE_USER:-postgres}
      - GO_DISCOVERY_DATABASE_PASSWORD=${GO_DISCOVERY_DATABASE_PASSWORD:-postgres}
      - GO_DISCOVERY_LOG_LEVEL=${GO_DISCOVERY_LOG_LEVEL:-info}
      - GOMODCACHE=/gomodcache
      - WAITFORIT_TIMEOUT=300
      - PORT=8080
    ports:
      - 8080:8080
    volumes:
      - ../../:/pkgsite
      - $GOPATH/pkg/mod:/gomodcache
    working_dir: /pkgsite
  seeddb:
     # This should match the version we are using on AppEngine.
    image: golang:1.15.5
    depends_on:
      - migrate
    # 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 "
        ./third_party/wait-for-it/wait-for-it.sh db:5432 --
          go run ./devtools/cmd/seeddb/seeddb/main.go"
    environment:
      - GO_DISCOVERY_DATABASE_HOST=db
      - GO_DISCOVERY_DATABASE_NAME=${GO_DISCOVERY_DATABASE_NAME:-"discovery-db"}
      - GO_DISCOVERY_DATABASE_USER=${GO_DISCOVERY_DATABASE_USER:-postgres}
      - GO_DISCOVERY_DATABASE_PASSWORD=${GO_DISCOVERY_DATABASE_PASSWORD:-postgres}
      - GO_DISCOVERY_LOG_LEVEL=${GO_DISCOVERY_LOG_LEVEL:-info}
      - GOMODCACHE=/gomodcache
      - WAITFORIT_TIMEOUT=300
      - PORT=8080
    ports:
      - 8080:8080
    volumes:
      - ../../:/pkgsite
      - $GOPATH/pkg/mod:/gomodcache
    working_dir: /pkgsite
  migrate:
    depends_on:
      - db
    image: migrate/migrate:v4.14.1
    entrypoint: ""
    command: sh -c "
        apk add --no-cache bash &&
        ./third_party/wait-for-it/wait-for-it.sh db:5432 --
          migrate -path /pkgsite/migrations
            -database postgres://postgres:postgres@db:5432/${GO_DISCOVERY_DATABASE_NAME:-'discovery-db'}?sslmode=disable up"
    environment:
      - WAITFORIT_TIMEOUT=300
    volumes:
      - ../../:/pkgsite
    working_dir: /pkgsite
  db:
    image: postgres:11.12
    environment:
      - LANG=C
      - POSTGRES_DB=${GO_DISCOVERY_DATABASE_NAME:-"discovery-db"}
      - POSTGRES_USER=${GO_DISCOVERY_DATABASE_USER:-postgres}
      - POSTGRES_PASSWORD=${GO_DISCOVERY_DATABASE_PASSWORD:-postgres}
    ports:
        - ${GO_DISCOVERY_DATABASE_PORT:-5432}:5432
  nodejs:
    image: node:14.17.0
    environment:
      # Use the values set on the host machine environment.
      - CI
      - GO_DISCOVERY_E2E_BASE_URL
      - GO_DISCOVERY_E2E_AUTHORIZATION
      - GO_DISCOVERY_E2E_QUOTA_BYPASS
      - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
    volumes:
      - ../../:/pkgsite
    working_dir: /pkgsite
