monzo / response

Monzo's real-time incident response and reporting tool ⚡️
MIT License
1.52k stars 165 forks source link

Docker #233

Open ekristen opened 3 years ago

ekristen commented 3 years ago

This PR makes building an official docker image possible. I would still consider this a work in progress and needs further testing, however I wanted to open it up to gauge interest in actually merging it.

  1. Restructures the demo to just use the official docker image (once it's made)
  2. Restructures the contents of demo into app/ to build an actual django app inside the docker image.
  3. Introduces a multi-stage docker image that will assemble all the pieces required to run response.
  4. Ensures that all settings can be set via environment variables.

How To Test

  1. clone my fork
  2. docker build -t response .
  3. cp demo/env.example demo/.env and modify with settings
  4. cd demo && docker-compose up -d

Docker Image Setup

The django app is simply installed to /app and response is installed as an actual python module in Stage 1 of the docker build. In the final stage all install python modules are pulled down and made available in the final image, keeping the final image as small as possible.

The docker image utilizes a entrypoint script that was adapted from the demo script, and can be adapted further to support setting an ADMIN user/pass via environment variables. The script ensures the database is up, migrations are run, and then starts uwsgi up to run the django app.

TODOS

These are possible todos I'd like to do still if there's interest.