𝘋𝘪𝘳𝘬

Somewhere between Linux woes, gaming, open source, 3D printing, recreational coding, and occasional ranting.

🔗 Me, but elsewhere

🇬🇧 / 🇩🇪

  • 7 Posts
  • 572 Comments
Joined 1 year ago
cake
Cake day: June 9th, 2023

help-circle










  • This is really dependent on […]

    … basically anything. Yes. You will always find yourself in problems where the best practice isn’t the best solution for.

    In your described use case an option would be having the application inside the container running with 10000:10001 but writing the data into another directory that is configured to use 1000:1001 (or whatever the user is you want to access the data with from your host) and just mount the volume there. This takes a bit more configuration effort than just running the application with 1000:1001 … but still :)




  • I personally use yadm

    I just use some code and Git.

    if [ ! -z "$PS1" ]; then
        repo="${XDG_CONFIG_HOME}/dotfiles/"
        br='origin/main'
    
        title="\e[1m\e[31m\n ░▒▓\e[7m    %s    \e[27m▓▒░\e[0m\n\n%s\n\n"
        status="$(git --git-dir="$repo" --work-tree="$HOME" status -s)"
        diff=$(git --git-dir="$repo" --work-tree="$HOME" diff --stat --cached $br)
    
        [ -n "$status" ] && printf "$title" "Uncommited changes!" "$status"
        [ -n "$diff" ] && printf "$title" "Not yet pushed commits!" "$diff"
    
        unset title status diff br
        alias dotfiles="/usr/bin/git --git-dir=$repo --work-tree=$HOME"
    fi
    

    The code runs when it’s an interactive shell with a PS1 prompt and just checks if any of the tracked files have changed or if there are commits that are not pushed. By configuration I ignore all untracked files. If something has changed or wasn’t pushed it always prints an annoying message.

    Whenever I want to do something I use dotfiles ..... instead of git ....., everything else works the same.



  • Yep! The names are basically just a convenient way for referencing a user or group ID.

    Under normal circumstances you should let the system decide what IDs to use, but in the confined environment of a docker container you can do pretty much what you want.

    If you really, really, really want to create a user and group just set the IDs manually:

    FROM alpine:latest
    COPY myscript.sh /app/myscript.sh
    RUN addgroup -g 10001 mycoolgroup && adduser -D -u 10000 -G mycoolgroup mycooluser
    USER mycooluser:mycoolgroup
    CMD ["sh", "/app/myscript.sh"]
    

    Just make sure to stay at or above 10000 so you won’t accidentally re-use IDs that are already defined on the host.