-
-
Notifications
You must be signed in to change notification settings - Fork 624
/
docker-entrypoint.sh
executable file
·43 lines (39 loc) · 1.44 KB
/
docker-entrypoint.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash
# Get the PUID and PGID from environment variables (or use default values 1000 if not set)
PUID=${PUID:-1000}
PGID=${PGID:-1000}
# Check if the provided PUID and PGID are non-empty, numeric values; otherwise, assign default values.
if ! [[ "$PUID" =~ ^[0-9]+$ ]]; then
PUID=1000
fi
if ! [[ "$PGID" =~ ^[0-9]+$ ]]; then
PGID=1000
fi
# Check if the specified group with PGID exists, if not, create it.
if ! getent group "$PGID" >/dev/null; then
groupadd -g "$PGID" appgroup
fi
# Create user if it doesn't exist.
if ! getent passwd "$PUID" >/dev/null; then
useradd --create-home --shell /bin/bash --uid "$PUID" --gid "$PGID" appuser
fi
# Make user the owner of the app directory.
chown -R "$PUID":"$PGID" /app
# Copy the default .bashrc file to the appuser home directory.
cp /etc/skel/.bashrc /home/appuser/.bashrc
chown "$PUID":"$PGID" /home/appuser/.bashrc
export HOME=/home/appuser
# Set permissions on font directories.
if [ -d "/usr/share/fonts" ]; then
chmod -R 777 /usr/share/fonts
fi
if [ -d "/var/cache/fontconfig" ]; then
chmod -R 777 /var/cache/fontconfig
fi
if [ -d "/usr/local/share/fonts" ]; then
chmod -R 777 /usr/local/share/fonts
fi
export PATH=/home/appuser/.local/bin:$PATH
# Switch to appuser and execute the Docker CMD or passed in command-line arguments.
# Using setpriv let's it run as PID 1 which is required for proper signal handling (similar to gosu/su-exec).
exec setpriv --reuid=$PUID --regid=$PGID --init-groups $@