User Tools

Site Tools


Write to custom host path from Docker container

Say you have an app that generates some reports and its running in its own container. You want to serve the reports from this container via nginx on host machine.

In your Dockerfile create reports dir and user/group, example of Dockerfile utilizing supercronic to run some cronjob.

FROM python:3.10-alpine3.16
RUN apk add --no-cache libffi-dev build-base cmake openssl-dev curl tzdata gnupg unixodbc-dev
RUN apk add --no-cache libffi-dev build-base cmake openssl-dev curl tzdata gnupg unixodbc-dev
    SUPERCRONIC=supercronic-linux-amd64 \
 && echo "${SUPERCRONIC_SHA1SUM}  ${SUPERCRONIC}" | sha1sum -c - \
 && chmod +x "$SUPERCRONIC" \
 && mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \
 && ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic
RUN addgroup --gid 2222 --system user_app && adduser --disabled-password --uid 2222 --system user_app --ingroup user_app
RUN mkdir -p /app/exports
RUN mkdir -p /app/exports/public
RUN chown -R user_app:user_app /app/exports
COPY . .
USER user_app
CMD ["supercronic", "/app/python-docker-crontab"]

This user should exist on the host machine with some UID e.g.:

useradd --no-create-home --uid 2222 user_app

In nginx setup a location on the host to serve e.g.

location /reports/ {
        autoindex on;
        autoindex_localtime on;
        alias /var/www/app_reports/public/;

The host path /var/www/app_reports/public/ needs to be mounted in container, similar to a volume, and needs to have the owner set to user_app so that the containerized app can write to it and nginx can serve it. Permissions can be 0755, so owner (user_app) can read/write/execute.

useradd --no-create-home --uid 2222 user_app
chown -R user_app:user_app /var/www/app_reports

Build and run the docker container:

docker build -t python-reports .
docker run --name reports -d -v /var/www/app_reports/:/app/exports/ python-reports

Tested on

  • Debian 11
  • Docker 20.10.21

See also


wiki/write_custom_host_path_docker_container.txt · Last modified: 2023/03/09 11:15 by antisa

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki