blob: 55f234eab306af66bf4a3def347762b41045c92b [file] [log] [blame]
# 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.19
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: ./third_party/wait-for-it/wait-for-it.sh db:5432 -- ./all.bash
volumes:
- ../../:/pkgsite
working_dir: /pkgsite
searchtest:
image: golang:1.19
depends_on:
- frontend
environment:
<<: *database-variables
<<: *go-variables
WAITFORIT_TIMEOUT: 300
entrypoint: ./third_party/wait-for-it/wait-for-it.sh frontend:8080 -- go run
command: "tests/search/main.go -frontend http://frontend:8080"
volumes:
- ../../:/pkgsite
working_dir: /pkgsite
api:
image: golang:1.19
depends_on:
- frontend
environment:
<<: *go-variables
WAITFORIT_TIMEOUT: 300
entrypoint: ./third_party/wait-for-it/wait-for-it.sh 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.19
depends_on:
- db
command: bash -c "
./third_party/wait-for-it/wait-for-it.sh 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.19
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 &&
./third_party/wait-for-it/wait-for-it.sh 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
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.19
entrypoint: go
environment:
<<: *database-variables
<<: *go-variables
volumes:
- ../../:/pkgsite
- gomodcache:/gomodcache
working_dir: /pkgsite
volumes:
gomodcache:
pgdata: