devtools: remove external ports from compose.yaml

Remove the "ports" config from compose.yaml, so that
no service binds a port on the host machine.

This prevents e2e and other tests from failing because there is
already something listening on a particular port on the user's
machine.

The services can still communicate with each other on the network that
docker-compose creates.

Also, add docker_postgres.sh to start postgres with docker, to replace
the one use case for exposed ports, and modify recreate_db.sh to work
with that script.

Change-Id: Ide3908fedd01886dc145a663f24151390c8d4d0e
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/350270
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
diff --git a/devtools/docker/compose.yaml b/devtools/docker/compose.yaml
index c41397d..fcd0636 100644
--- a/devtools/docker/compose.yaml
+++ b/devtools/docker/compose.yaml
@@ -98,8 +98,6 @@
       <<: *go-variables
       PORT: 8080
       WAITFORIT_TIMEOUT: 300
-    ports:
-      - 8080:8080
     volumes:
       - ../../:/pkgsite
       - gomodcache:/gomodcache
@@ -136,8 +134,6 @@
       POSTGRES_DB: ${GO_DISCOVERY_DATABASE_NAME:-discovery-db}
       POSTGRES_PASSWORD: ${GO_DISCOVERY_DATABASE_PASSWORD:-postgres}
       POSTGRES_USER: ${GO_DISCOVERY_DATABASE_USER:-postgres}
-    ports:
-        - ${GO_DISCOVERY_DATABASE_PORT:-5432}:5432
   nodejs:
     image: node:14.17.0
     environment:
@@ -155,8 +151,6 @@
     working_dir: /pkgsite
   chrome:
     image: browserless/chrome:1.46.0-puppeteer-10.1.0
-    ports:
-      - 3000:3000
     environment:
       - CONNECTION_TIMEOUT=240000
   go:
diff --git a/devtools/docker_postgres.sh b/devtools/docker_postgres.sh
new file mode 100755
index 0000000..f75c759
--- /dev/null
+++ b/devtools/docker_postgres.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env -S bash -e
+
+# 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.
+
+docker run -d -p 5432:5432 --name local-postgres \
+  -e LANG=C \
+  -e POSTGRES_DB=${GO_DISCOVERY_DATABASE_NAME:-discovery-db} \
+  -e POSTGRES_USER=${GO_DISCOVERY_DATABASE_USER:-postgres} \
+  -e POSTGRES_PASSWORD=${GO_DISCOVERY_DATABASE_PASSWORD:-postgres} \
+  postgres:11.12
diff --git a/devtools/recreate_db.sh b/devtools/recreate_db.sh
index bdefb38..d9e7714 100755
--- a/devtools/recreate_db.sh
+++ b/devtools/recreate_db.sh
@@ -6,10 +6,8 @@
 
 # Script for dropping and creating a new database locally using docker.
 
-source devtools/docker.sh || { echo "Are you at repo root?"; exit 1; }
-
-dockercompose stop
-dockercompose down --remove-orphans
-dockercompose up -d db
-go run devtools/cmd/db/main.go drop
+docker rm -f local-postgres
+./devtools/docker_postgres.sh
+sleep 3 # wait for DB to be ready
+go run ./devtools/cmd/db drop
 ./devtools/create_local_db.sh