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 <[email protected]>
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"
 

Reply via email to