Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Gunicorn in the Docker container #8676

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
Open

Use Gunicorn in the Docker container #8676

wants to merge 12 commits into from

Conversation

willbarton
Copy link
Member

@willbarton willbarton commented Dec 9, 2024

Our existing prod container for cf.gov ran the application via Apache and mod_wsgi, having to compile a custom version of mod_wsgi to make it work. Except it didn't.

This PR adopts Gunicorn in the prod-like container, and configures a separate Apache container to proxy pass to the python container. It also makes the Apache container available in dev.

Run the dev setup with local settings:

docker-compose up

Run the prod setup with production settings:

docker-compose -f docker-compose.yml -f docker-compose.prod.yml up

Checklist

  • PR has an informative and human-readable title
  • Changes are limited to a single goal (no scope creep)

cfgov/cfgov/settings/production.py Outdated Show resolved Hide resolved
cfgov/cfgov/settings/production.py Outdated Show resolved Hide resolved
@willbarton willbarton force-pushed the gunicorn branch 2 times, most recently from 510bc5f to 1633e57 Compare December 9, 2024 18:03
This serves the Django application and static assets with Gunicorn from the "prod" Docker target container.
Instead of running Apache in our production container, run a separate Apache container that `ProxyPass`es to our Django/Gunicorn container.
This changes moves our Gunicorn dependency to a separate requirements file, and moves container-specific Django configuration to a `DEPLOY_ENVIRONMENT==container` check, and adds a `DEPLOY_ENVIRONMENT` environment variable to the container.
For deployment to servers, we do not set APACHE_USER/APACHE_GROUP. This change sets their default to those expected values, to be overridden only if the variables are set in the environment.
This change limits when Apache will proxy pass to the application to when the CFGOV_APPLICATION_HOST env var is set.
@willbarton willbarton marked this pull request as ready for review December 10, 2024 18:31
Co-authored-by: Andy Chosak <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants