dockeralpine-linux

How do I add a user when I'm using Alpine as a base image?


I'm using alpine (or an image that is based on Alpine) as the base image in my Dockerfile. Which instructions do I need to add to create a user?

Eventually I'll use this user to run the application I'll place into the container so that the root user does not.


Solution

  • Alpine uses the command adduser and addgroup for creating users and groups (rather than useradd and usergroup).

    FROM alpine:latest
    
    # Create a group and user
    RUN addgroup -S appgroup && adduser -S appuser -G appgroup
    
    # Tell docker that all future commands should run as the appuser user
    USER appuser
    

    The flags for adduser are:

    Usage: adduser [OPTIONS] USER [GROUP]
    
    Create new user, or add USER to GROUP
    
            -h DIR          Home directory
            -g GECOS        GECOS field
            -s SHELL        Login shell
            -G GRP          Group
            -S              Create a system user
            -D              Don't assign a password
            -H              Don't create home directory
            -u UID          User id
            -k SKEL         Skeleton directory (/etc/skel)
    

    Add new user official docs