diff --git a/start-server.sh b/start-server.sh index ab56c14..980842c 100644 --- a/start-server.sh +++ b/start-server.sh @@ -114,6 +114,34 @@ require_docker() { fi } +ensure_host_permissions() { + local target_uid="${DOCKER_USER_ID:-1000}" + local target_gid="${DOCKER_GROUP_ID:-1000}" + local dirs=( + "$ROOT_DIR/env/dist/etc" + "$ROOT_DIR/env/dist/logs" + "$ROOT_DIR/env/dist/temp" + ) + + mkdir -p "${dirs[@]}" + + if [[ "$(id -u)" -eq 0 ]]; then + chown -R "${target_uid}:${target_gid}" "${dirs[@]}" + return 0 + fi + + local dir + for dir in "${dirs[@]}"; do + if [[ ! -w "$dir" ]]; then + printf 'host directory is not writable: %s\n' "$dir" >&2 + printf 'Run:\n sudo chown -R %s:%s %q %q %q\n' \ + "$target_uid" "$target_gid" \ + "${dirs[0]}" "${dirs[1]}" "${dirs[2]}" >&2 + exit 1 + fi + done +} + while (($#)); do case "$1" in --no-build) @@ -142,6 +170,9 @@ require_docker log "applying module configuration" bash "$ROOT_DIR/setup-modules.sh" +log "ensuring host directory permissions" +ensure_host_permissions + log "starting database" if [[ -n "$BUILD_FLAG" ]]; then docker compose up -d --build ac-database