# Copyright 2020 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: '2.4'
services:
  # nodejs is used to run npm scripts from ../../package.json. It mounts the
  # pkgsite root directory into a container and obscures the git directories
  # as a precaution so they can't be written to during npm package installs.
  nodejs:
    build:
      context: ../../
      dockerfile: devtools/config/Dockerfile.nodejs
    environment:
      FRONTEND_URL: ${GO_DISCOVERY_FRONTEND_URL:-http://host.docker.internal:8080}
    image: pkgsite_nodejs
    init: true
    volumes:
      - ../..:/pkgsite
      - /pkgsite/.git
      - /pkgsite/private/.git

  # ci extends the nodejs config above and is used to run the e2e tests in CI.
  # It starts the frontend server and then runs a given npm command.
  ci:
    depends_on:
      - frontend
    environment:
      FRONTEND_URL: ${GO_DISCOVERY_FRONTEND_URL:-http://frontend:8080}
    extends: nodejs
    image: pkgsite_ci

  frontend:
    build:
      context: ../../
      dockerfile: devtools/config/Dockerfile.frontend
    command: ./frontend -host=0.0.0.0:8080
    depends_on:
      - migrate
    environment:
      - GO_DISCOVERY_DATABASE_USER=postgres
      - GO_DISCOVERY_DATABASE_PASSWORD=postgres
      - GO_DISCOVERY_DATABASE_HOST=db
      - GO_DISCOVERY_DATABASE_NAME=discovery-db
      - PORT=8080
    image: pkgsite_frontend
    ports:
      - 8080:8080
    volumes:
      - './e2e-config.yaml:/app/experiment.yaml'

  migrate:
    depends_on:
      - wait_for_db
    image: migrate/migrate:v4.14.1
    restart: on-failure:5
    volumes:
      - ../../migrations:/pkgsite/migrations
    command:
      [
        '-path',
        '/pkgsite/migrations',
        '-database',
        'postgres://postgres:postgres@db:5432/discovery-db?sslmode=disable',
        'up',
      ]

  # wait_for_db is used to delay migrations until the database is ready for connections.
  wait_for_db:
    image: ubuntu:14.04
    depends_on:
      - db
    command: >
      /bin/bash -c "
        while ! nc -z db 5432;
        do
          echo sleeping;
          sleep 1;
        done;
        echo connected!;
      "

  db:
    image: postgres:13.2
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_DB=discovery-db
