You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by oc...@apache.org on 2022/11/19 02:24:14 UTC

[trafficcontrol] branch master updated: Dev-CiaB: Run db/admin as root (#7209)

This is an automated email from the ASF dual-hosted git repository.

ocket8888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 09039af182 Dev-CiaB: Run db/admin as root (#7209)
09039af182 is described below

commit 09039af1829d312a70326f13ba585b13d6a078ba
Author: Zach Hoffman <zr...@apache.org>
AuthorDate: Sat Nov 19 02:24:08 2022 +0000

    Dev-CiaB: Run db/admin as root (#7209)
---
 dev/traffic_ops/run.sh | 46 ++++++++++++++++++++++++++++------------------
 1 file changed, 28 insertions(+), 18 deletions(-)

diff --git a/dev/traffic_ops/run.sh b/dev/traffic_ops/run.sh
index 69ddecd350..9a4543bbd5 100755
--- a/dev/traffic_ops/run.sh
+++ b/dev/traffic_ops/run.sh
@@ -20,10 +20,34 @@ set -o errexit
 set -o xtrace
 trap '[ $? -eq 0 ] && exit 0 || echo "Error on line ${LINENO} of ${0}"; exit 1' EXIT
 
+db_init() {
+	while ! pg_isready -h db -p 5432 -d postgres; do
+		echo "waiting for db on postgresql://db:5432/postgres";
+		sleep 3;
+	done
+
+	cd "$TC"
+	make traffic_ops/app/db/admin
+	(cd "$TC/dev/traffic_ops"
+
+	"$ADMIN" -c ./dbconf.yml -s "$TC/traffic_ops/app/db/create_tables.sql" -S "$TC/traffic_ops/app/db/seeds.sql" -p "$TC/traffic_ops/app/db/patches.sql" -m "$TC/traffic_ops/app/db/migrations" reset
+	"$ADMIN" -c ./dbconf.yml -s "$TC/traffic_ops/app/db/create_tables.sql" -S "$TC/traffic_ops/app/db/seeds.sql" -p "$TC/traffic_ops/app/db/patches.sql" -m "$TC/traffic_ops/app/db/migrations" upgrade
+	"$ADMIN" -v -c ./traffic.vault.dbconf.yml -s "$TC/traffic_ops/app/db/trafficvault/create_tables.sql" -m "$TC/traffic_ops/app/db/trafficvault/migrations" reset
+	"$ADMIN" -v -c ./traffic.vault.dbconf.yml -s "$TC/traffic_ops/app/db/trafficvault/create_tables.sql" -m "$TC/traffic_ops/app/db/trafficvault/migrations" upgrade
+
+	psql -d 'postgres://traffic_ops:twelve12@db:5432/traffic_ops_development?sslmode=disable' -f ./seed.psql)
+}
+
 user=trafficops
 uid="$(stat -c%u "$TC")"
 gid="$(stat -c%g "$TC")"
 if [[ "$(id -u)" != "$uid" ]]; then
+	# db/admin must be run as root (see apache/trafficcontrol#7202)
+	if [[ $uid -ne 0 ]]; then
+		db_init
+		chown "${uid}:${gid}" traffic_ops/app/db/admin
+	fi
+
 	for dir in "${GOPATH}/bin" "${GOPATH}/pkg"; do
 		if [[ -e "$dir" ]] && [[ "$(stat -c%u "$dir")" -ne "$uid" || "$(stat -c%g "$dir")" -ne "$gid" ]] ; then
 			chown -R "${uid}:${gid}" "$dir"
@@ -35,24 +59,10 @@ if [[ "$(id -u)" != "$uid" ]]; then
 	exec su "$user" -- "$0"
 fi
 
-cd "$TC"
-
-while ! pg_isready -h db -p 5432 -d postgres; do
-	echo "waiting for db on postgresql://db:5432/postgres";
-	sleep 3;
-done
-
-make traffic_ops/app/db/admin
-cd "$TC/dev/traffic_ops"
-
-"$ADMIN" -c ./dbconf.yml -s "$TC/traffic_ops/app/db/create_tables.sql" -S "$TC/traffic_ops/app/db/seeds.sql" -p "$TC/traffic_ops/app/db/patches.sql" -m "$TC/traffic_ops/app/db/migrations" reset
-"$ADMIN" -c ./dbconf.yml -s "$TC/traffic_ops/app/db/create_tables.sql" -S "$TC/traffic_ops/app/db/seeds.sql" -p "$TC/traffic_ops/app/db/patches.sql" -m "$TC/traffic_ops/app/db/migrations" upgrade
-"$ADMIN" -v -c ./traffic.vault.dbconf.yml -s "$TC/traffic_ops/app/db/trafficvault/create_tables.sql" -m "$TC/traffic_ops/app/db/trafficvault/migrations" reset
-"$ADMIN" -v -c ./traffic.vault.dbconf.yml -s "$TC/traffic_ops/app/db/trafficvault/create_tables.sql" -m "$TC/traffic_ops/app/db/trafficvault/migrations" upgrade
-
-
-psql -d 'postgres://traffic_ops:twelve12@db:5432/traffic_ops_development?sslmode=disable' -f ./seed.psql
-
+# On Docker Desktop, bind mounts are owned by root
+if [[ $uid -eq 0 ]]; then
+	db_init
+fi
 
 cd "$TC/traffic_ops/traffic_ops_golang"