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"