-
Notifications
You must be signed in to change notification settings - Fork 6
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
MDBF-423: Change default connection to database to use host different than dock… #3
Conversation
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@an3l I like the first change where one allows multiple hosts in DJANGO's allow hosts.
I am ok with having a change-able db host via an environment variable. You can do as Daniel suggests, but please also update
docker/.env file if you do so.
Ok based on documentation allowed_host is used for other purposes (may be empty when |
Based on #8 it seems that one need to have |
…er container - After setting up the virtual environment for the project (note missing instruction how to work locally with venv in `Readme.md`) and after running the `makemigrations --dry-run` or starting the webserver, application is trying to connect with hardcoded hostname `db` used from Dockerfile - This patch allows to add multiple hostname from environment variable `DJANGO_ALLOWED_HOSTS` separated by delimiter (I liked `,`) and since the create type in settings.py is `list` type it is free to use first value from a list if/when needed. - Add `get()` method for `os.environ` which is returning `None` instead of `KeyError` and validate parameters that we need. Using this approach only `$ export DJANGO_DB_HOST DJANGO_USER_NAME DJANGO_USER_NAME_PASSWOR` is needed. - Update `docker/.env` with new added environment variable `DJANGO_DB_HOST` - Proof * No patch ``` $ export DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1 $ ./manage.py makemigrations --dry-run /home/anel/mariadb/feedback-plugin-backend/env/lib/python3.8/site-packages/django/core/management/commands/makemigrations.py:105: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': (2005, "Unknown MySQL server host 'db' (-3)") warnings.warn( Migrations for 'feedback_plugin': feedback_plugin/migrations/0002_alter_rawdata_upload_time.py - Alter field upload_time on rawdata ``` * With patch ``` $ ./manage.py makemigrations --dry-run Migrations for 'feedback_plugin': feedback_plugin/migrations/0002_alter_rawdata_upload_time.py - Alter field upload_time on rawdata ``` - Also server gets started correctly ``` $ ./manage.py runserver Performing system checks... System check identified no issues (0 silenced). You have 19 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, feedback_plugin, sessions. Run 'python manage.py migrate' to apply them. May 30, 2022 - 14:51:50 Django version 3.2.13, using settings 'feedback_plugin.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. ```
@@ -29,6 +29,7 @@ DJANGO_DEBUG=True | |||
# | |||
# There will also be a test_{DJANGO_DB_NAME} database used for running tests. | |||
DJANGO_DB_NAME='feedback_plugin' | |||
DJANGO_DB_HOST='db' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on #8 it seems that one need to have docker_db_1
as an default host based on the docker_default
network
src/feedback_plugin/settings.py
Outdated
# DB_HOST default means localhost, instead one should set the unix socket and/or other host | ||
DB_HOST = os.environ.get('DJANGO_DB_HOST') | ||
if DB_HOST == None: | ||
DB_HOST = '' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The same is here ^^^
Based on #8 it seems that one need to have docker_db_1
as an default host based on the docker_default
network
Instead when using locally this will be interpreted as an localhost, but when using in a container empty string will use socket in web_1
container and the host will not be visible, ever.
This will need to update.
Closing this as currently the deployment relies on docker-compose for full stack deployment. We will make these changes when we need to have a DB run on a different host. We will keep using square brackets for environment variable fetching to highlight bugs. If an environment variable is missing, we want the code to throw an error, not silently continue. |
…er container
(note missing instruction how to work locally with venv in
Readme.md
) andafter running the
makemigrations --dry-run
or starting the webserver,application is trying to connect with hardcoded hostname
db
used from Dockerfileby delimiter (I liked
,
) and since the create type in settings.py islist
typeit is free to use first value from a list.