- GID
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- - .:/home/patchwork/patchwork/
+ - .:/home/ubuntu/patchwork/
ports:
- "8000:8000"
environment:
- UID
- GID
- DATABASE_TYPE=sqlite3
- - DATABASE_NAME=/home/patchwork/patchwork/tools/docker/db/db.sqlite3
+ - DATABASE_NAME=/home/ubuntu/patchwork/tools/docker/db/db.sqlite3
FROM ghcr.io/getpatchwork/pyenv:latest
+# Match the host user's UID so the container can write to bind-mounted volumes.
+# Ubuntu 24.04 ships with an 'ubuntu' user (UID 1000); we just remap it.
ARG UID=1000
ARG GID=1000
+RUN groupmod -g "${GID}" ubuntu && usermod -u "${UID}" ubuntu && chown -R ubuntu:ubuntu /home/ubuntu
ARG TZ="Australia/Canberra"
ENV DEBIAN_FRONTEND noninteractive
ENV PYTHONUNBUFFERED 1
-ENV PROJECT_HOME /home/patchwork/patchwork
+ENV PROJECT_HOME /home/ubuntu/patchwork
ENV DJANGO_SETTINGS_MODULE patchwork.settings.dev
-RUN groupadd -o --gid=$GID patchwork && \
- useradd --uid=$UID --gid=$GID --create-home patchwork
RUN rm -f /etc/localtime; ln -s /usr/share/zoneinfo/$TZ /etc/localtime
RUN eval "$(pyenv init -)"
COPY tools/docker/entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
-USER patchwork
-WORKDIR /home/patchwork/patchwork
+USER ubuntu
+WORKDIR /home/ubuntu/patchwork
# check if patchwork is mounted. Checking if we exist is a
# very good start!
-if [ ! -f ~patchwork/patchwork/tools/docker/entrypoint.sh ]; then
+if [ ! -f ~/patchwork/tools/docker/entrypoint.sh ]; then
cat << EOF
The patchwork directory doesn't seem to be mounted!
Are you using docker-compose? If so, you may need to create an SELinux rule.
Refer to the development installation documentation for more information.
-If not, you need -v PATH_TO_PATCHWORK:/home/patchwork/patchwork
+If not, you need -v PATH_TO_PATCHWORK:/home/ubuntu/patchwork
EOF
exit 1
fi