Ben Sturmfels
3826b6fb66
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.
29 lines
1.3 KiB
Text
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"]
|