website/Dockerfile-debian-bookworm
Ben Sturmfels 3826b6fb66
Switch settings to use "the one true way" approach
The advantage of this approach is that the production and dev configurations are
in version control, so there's less opportunity for surprises.

As advocated by Jacob Kaplan-Moss (OSCON 2011) and Two Scoops of Django book.
2024-03-20 14:10:00 +11:00

29 lines
1.3 KiB
Text

# To build the Docker image with the necessary dependencies:
# docker build --tag sfconservancy.org-bookworm --file Dockerfile-debian-bookworm .
#
# [FIRST RUN ONLY] If you don't have an existing copy of the database, run:
# touch conservancy-website.sqlite3
#
# Start the application with:
# docker run --tty --interactive --rm=true --publish=8000:8000 \
# --mount type=bind,source=$(pwd),target=/var/www/website \
# --mount type=bind,source=$(pwd)/conservancy-website.sqlite3,target=/var/lib/www/database/conservancy-website.sqlite3 \
# sfconservancy.org-bookworm:latest
#
# [FIRST RUN ONLY] In a separate terminal, run `docker ps` noting "CONTAINER ID".
# Then run the database migrations with:
# docker exec -it [CONTAINER ID] /usr/bin/python3 manage.py migrate
#
# Visit the site at http://127.0.0.1:8000
ARG DEBIAN_FRONTEND=noninteractive
FROM debian:bookworm
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y python3 python3-pip python3-wheel sqlite3
RUN apt-get install -y python3-django python3-bs4 python3-html5lib python3-django-countries
COPY ./requirements.txt /var/www/website/requirements.txt
WORKDIR /var/www/website/
RUN python3 -m pip install -r requirements.txt --break-system-packages
RUN python3 -m pip freeze
ENTRYPOINT ["python3", "/var/www/website/manage.py", "runserver", "0.0.0.0:8000"]