Skip to content

Commit

Permalink
fix subuid
Browse files Browse the repository at this point in the history
  • Loading branch information
Headary committed Dec 28, 2023
1 parent 9b4ef39 commit 0fa2770
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 6 deletions.
2 changes: 2 additions & 0 deletions docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@
- stáhnutí `fykosak/buildtools` (potřeba před prvním buildem repozitáře): `docker exec -it astrid podman pull docker.io/fykosak/buildtools`
- po fungování gitu potřeba přidat ssh klíč na cílový server
- je možné, že ssh bude vyhazovat chybu špatně nastaveného přístupu k privátnímu klíči, v takovém případě je potřeba přes `chmod` nastavit privátnímu klíči práva `600`
- Možno přes env_var `PUID` a `GUID` nastavit uživatele, pod kterým to pojede. Pozor ale na UID, které již můžou existovat v dockeru, potom se to rozbije.
- pokud je PUID nebo GUID změněno, je potřeba smazat starý kontejner (`docker rm astrid`) a znovu jej vytvořit
2 changes: 1 addition & 1 deletion docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ services:
container_name: astrid
environment:
TZ: 'Europe/Prague'
PUID: 1000
PUID: 950
GUID: 65534
privileged: true # needed for containers
volumes:
Expand Down
29 changes: 24 additions & 5 deletions docker/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

set -e

function checksubid {
if [ $(grep -E "^$1:" $2 | wc -l) -eq 0 ]; then
exit 1
fi
exit 0
}

# check required variables
if [ -z "$PUID" ]; then
echo 'Environment variable $PUID not specified'
Expand All @@ -23,17 +30,29 @@ if [ ! $(getent passwd astrid) ] && [ ! $(getent passwd $PUID) ]; then
echo "User astrid with UID $PUID created."
fi

USER=$(id -nu $PUID)

# add to subuid and subgid
if ! $(checksubid $USER /etc/subuid); then
echo "$USER:100000:65536" >> /etc/subuid
fi

if ! $(checksubid $USER /etc/subgid); then
echo "$USER:100000:65536" >> /etc/subgid
fi

# set ownership of /data to target user
chown "$PUID:$GUID" /data


# create needed files if missing
su - astrid -c "mkdir -p /data/config /data/containers /data/log /data/repos /data/ssh"
su - $USER -c "mkdir -p /data/config /data/containers /data/log /data/repos /data/ssh"

su - astrid -c "cp -n /app/config.ini.sample /data/config/config.ini"
su - astrid -c "cp -n /app/repos.ini.sample /data/config/repos.ini"
su - $USER -c "cp -n /app/config.ini.sample /data/config/config.ini"
su - $USER -c "cp -n /app/repos.ini.sample /data/config/repos.ini"

if [ $(ls "/data/ssh" | grep ".pub" | wc -l) -eq 0 ]; then
su - astrid -c "ssh-keygen -t ed25519 -f /data/ssh/id_ed25519"
su - $USER -c "ssh-keygen -t ed25519 -f /data/ssh/id_ed25519"
fi

su - astrid -c "python3 -u /app/main"
su - $USER -c "python3 -u /app/main"

0 comments on commit 0fa2770

Please sign in to comment.