Skip to content

Instantly share code, notes, and snippets.

@alkrauss48
Last active November 10, 2022 16:24
Show Gist options
  • Save alkrauss48/2dd9f9d84ed6ebff9240ccfa49a80662 to your computer and use it in GitHub Desktop.
Save alkrauss48/2dd9f9d84ed6ebff9240ccfa49a80662 to your computer and use it in GitHub Desktop.
Running a docker container as a non-root user
# By default, Docker containers run as the root user. This is bad because:
# 1) You're more likely to modify up settings that you shouldn't be
# 2) If an attacker gets access to your container - well, that's bad if they're root.
# Here's how you can run change a Docker container to run as a non-root user
## CREATE APP USER ##
# Create the home directory for the new app user.
RUN mkdir -p /home/app
# Create an app user so our program doesn't run as root.
RUN groupadd -r app &&\
useradd -r -g app -d /home/app -s /sbin/nologin -c "Docker image user" app
# Set the home directory to our app user's home.
ENV HOME=/home/app
ENV APP_HOME=/home/app/my-project
## SETTING UP THE APP ##
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
# ***
# Do any custom logic needed prior to adding your code here
# ***
# Copy in the application code.
ADD . $APP_HOME
# Chown all the files to the app user.
RUN chown -R app:app $APP_HOME
# Change to the app user.
USER app
@wadewilliams
Copy link

Instead of

ADD . $APP_HOME
RUN chown ... 
COPY --chown=app:app . $APP_HOME

Runs faster and fixes @tavasim's reference to the image size.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment