mbox series

[error-report-web,0/4] Deploy with gunicorn behind nginx

Message ID 20261018020116.75276-1-tim.orling@konsulko.com
Headers show
Series Deploy with gunicorn behind nginx | expand

Message

Tim Orling Oct. 18, 2026, 1:57 a.m. UTC
Align docker-compose with layerindex-web and deploy with gunicorn
behind an nginx reverse-proxy. We may move to uwsgi (better handles
static pages) and Caddy (better handles Let's Encrypt certs) in the
future, but for now set up better best practices.

Move the .env setup to dev, prod and staging flavors. The difference
between prod and staging is that Let's Encrypt staging server is
used for staging.

Add docker/nginx*.conf, similar to what is in layerindex-web and
provide a settings.py.docker example file.

We may need to align settings.py better with production, but for
now this is an improvement.

Tim Orling (4):
  Run gunicorn behind nginx in docker-compose.
  Add staging and production docker-compose setups with env files.
  Add a VS Code devcontainer.
  Remove the obsolete .env.

 .devcontainer/devcontainer.json      | 63 ++++++++++++++++++++++++
 .devcontainer/docker-compose.dev.yml | 15 ++++++
 .dockerignore                        |  2 +
 .env                                 |  5 --
 .env.dev.app                         |  8 ++++
 .env.dev.db                          |  5 ++
 .env.prod.app                        |  9 ++++
 .env.prod.db                         |  6 +++
 .env.staging.app                     |  9 ++++
 .env.staging.db                      |  6 +++
 .gitignore                           |  1 +
 Dockerfile                           |  2 +-
 README                               | 39 +++++++++++++++
 docker-compose.prod.yaml             | 55 +++++++++++++++++++++
 docker-compose.staging.yaml          | 55 +++++++++++++++++++++
 docker-compose.yaml                  | 32 ++++++++-----
 docker/nginx-ssl.conf                | 72 ++++++++++++++++++++++++++++
 docker/nginx.conf                    | 49 +++++++++++++++++++
 project/settings.py.docker           |  3 +-
 19 files changed, 418 insertions(+), 18 deletions(-)
 create mode 100644 .devcontainer/devcontainer.json
 create mode 100644 .devcontainer/docker-compose.dev.yml
 delete mode 100644 .env
 create mode 100644 .env.dev.app
 create mode 100644 .env.dev.db
 create mode 100644 .env.prod.app
 create mode 100644 .env.prod.db
 create mode 100644 .env.staging.app
 create mode 100644 .env.staging.db
 create mode 100644 docker-compose.prod.yaml
 create mode 100644 docker-compose.staging.yaml
 create mode 100644 docker/nginx-ssl.conf
 create mode 100644 docker/nginx.conf


base-commit: 752b7188d04c2fd0e2f32f0cd2dd437c43058d82
prerequisite-patch-id: 9c9d012e1163dd1d335531d0451657823f17eb64
prerequisite-patch-id: ddb4df3e54736ed25846f91d4918299e601f4071
prerequisite-patch-id: ab69f4aa494291611cbe0e916f18b07f4aeebe57
prerequisite-patch-id: ac2b802ea065536df3854c48e265f5508d201cff
prerequisite-patch-id: 81a7de0e9568848efc8c66d397abb5f56218db95
prerequisite-patch-id: cf32dcaef20903890a020211a35f46b2384207da
prerequisite-patch-id: 6920bc5c70071bbd42b55b08bfc2bff04133c3ab
prerequisite-patch-id: a72bee4356db80ccb45321967d18081961f60860
prerequisite-patch-id: a2285b682329ba20d838085588b7c6681a86d273
prerequisite-patch-id: c3980e46d49b00b419cf4a7c2bc32c346478a453
prerequisite-patch-id: 627f58daa68852066f56558f08b07ad4af7bef9f
prerequisite-patch-id: 2d1b78495c909de035dbed74af06db5683701d1b
prerequisite-patch-id: 028165edb39ba03ad70f83ae9e2f36dff8c7e912