aboutsummaryrefslogtreecommitdiff
path: root/docker/entrypoint.sh
diff options
context:
space:
mode:
Diffstat (limited to 'docker/entrypoint.sh')
-rwxr-xr-xdocker/entrypoint.sh32
1 files changed, 30 insertions, 2 deletions
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index 80a7fe586..afbc5ef6e 100755
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -1,5 +1,33 @@
#!/bin/sh
+# Fix permissions for mounted volumes
+# If /data is mounted from host, it might have different ownership
+# Fix this by ensuring seaweed user owns the directory
+if [ "$(id -u)" = "0" ]; then
+ # Running as root, check and fix permissions if needed
+ SEAWEED_UID=$(id -u seaweed)
+ SEAWEED_GID=$(id -g seaweed)
+
+ # Verify seaweed user and group exist
+ if [ -z "$SEAWEED_UID" ] || [ -z "$SEAWEED_GID" ]; then
+ echo "Error: 'seaweed' user or group not found. Cannot fix permissions." >&2
+ exit 1
+ fi
+
+ DATA_UID=$(stat -c '%u' /data 2>/dev/null)
+ DATA_GID=$(stat -c '%g' /data 2>/dev/null)
+
+ # Only run chown -R if ownership doesn't match (much faster for subsequent starts)
+ echo "Fixing /data ownership for seaweed user (uid=$SEAWEED_UID, gid=$SEAWEED_GID)"
+ if ! chown -R seaweed:seaweed /data; then
+ echo "Warning: Failed to change ownership of /data. This may cause permission errors." >&2
+ echo "If /data is read-only or has mount issues, the application may fail to start." >&2
+ fi
+
+ # Use su-exec to drop privileges and run as seaweed user
+ exec su-exec seaweed "$0" "$@"
+fi
+
isArgPassed() {
arg="$1"
argWithEqualSign="$1="
@@ -8,10 +36,10 @@ isArgPassed() {
passedArg="$1"
shift
case $passedArg in
- $arg)
+ "$arg")
return 0
;;
- $argWithEqualSign*)
+ "$argWithEqualSign"*)
return 0
;;
esac