diff --git a/docker/README.md b/docker/README.md index e20cdf5..15cab8a 100644 --- a/docker/README.md +++ b/docker/README.md @@ -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 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 2180bee..5288866 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -10,7 +10,7 @@ services: container_name: astrid environment: TZ: 'Europe/Prague' - PUID: 1000 + PUID: 950 GUID: 65534 privileged: true # needed for containers volumes: diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 34b421a..a13e2e5 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -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' @@ -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"