From bb54ed11776b3550fab3c2bc87348186c7f4a68a Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Fri, 31 Jan 2025 02:35:10 -0300 Subject: [PATCH 01/18] dependency and env variables --- .env.example | 10 ++++++++++ docker/devicehub-django.Dockerfile | 1 + 2 files changed, 11 insertions(+) diff --git a/.env.example b/.env.example index 2faa63e..38dbcdb 100644 --- a/.env.example +++ b/.env.example @@ -71,3 +71,13 @@ IDHUB_ENABLE_EMAIL=false IDHUB_ENABLE_2FACTOR_AUTH=false IDHUB_ENABLE_DOMAIN_CHECKER=false IDHUB_PREDEFINED_TOKEN='27f944ce-3d58-4f48-b068-e4aa95f97c95' + + + +#POSTGRES VARS + +DB_NAME="devicehub" +DB_USER="ereuse" +DB_PASSWORD="ereuse" +DB_DOMAIN=localhost +DB_PORT=8000 diff --git a/docker/devicehub-django.Dockerfile b/docker/devicehub-django.Dockerfile index 7c6d35d..a676bdd 100644 --- a/docker/devicehub-django.Dockerfile +++ b/docker/devicehub-django.Dockerfile @@ -4,6 +4,7 @@ FROM python:3.11.10-slim-bookworm RUN apt update && \ apt-get install -y \ python3-xapian \ + python3-psycopg2 \ git \ sqlite3 \ curl \ -- 2.30.2 From d79880ff9d879da44dcf255e0d9161096a0c23ea Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Fri, 31 Jan 2025 02:35:33 -0300 Subject: [PATCH 02/18] initial postgres docker implementation --- dhub/settings.py | 10 +++++++--- docker-compose.yml | 19 +++++++++++++++++++ docker/devicehub-django.entrypoint.sh | 25 ++++++++++++++++++++++--- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/dhub/settings.py b/dhub/settings.py index 2aca54e..3da04de 100644 --- a/dhub/settings.py +++ b/dhub/settings.py @@ -133,9 +133,13 @@ WSGI_APPLICATION = "dhub.wsgi.application" # https://docs.djangoproject.com/en/5.0/ref/settings/#databases DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db/db.sqlite3", + 'default': { + 'ENGINE': os.getenv('DB_ENGINE', 'django.db.backends.postgresql'), + 'NAME': os.getenv('DB_NAME', 'devicehub'), + 'USER': os.getenv('DB_USER', 'devicehub'), + 'PASSWORD': os.getenv('DB_PASSWORD', 'devicehub'), + 'HOST': os.getenv('DB_HOST', 'postgres'), + 'PORT': os.getenv('DB_PORT', '5432'), } } diff --git a/docker-compose.yml b/docker-compose.yml index c7713ef..0d93468 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,6 +20,25 @@ services: - .:/opt/devicehub-django ports: - ${DEVICEHUB_PORT:-8000}:${DEVICEHUB_PORT:-8000} + depends_on: + - postgres + + devicehub-postgres: + image: postgres:17 + environment: + - DB_NAME=${DB_NAME:-devicehub} + - db_USER=${DB_USER:-devicehub} + - db_PASSWORD=${DB_PASSWORD:-devicehub} + volumes: + - pg_data:/var/lib/postgresql/data + ports: + - ${DB_PORT}:${DB_PORT} + + + +volumes: + pg_data: + # TODO add database service for idhub, meanwhile sqlite diff --git a/docker/devicehub-django.entrypoint.sh b/docker/devicehub-django.entrypoint.sh index 318435f..defaafe 100644 --- a/docker/devicehub-django.entrypoint.sh +++ b/docker/devicehub-django.entrypoint.sh @@ -5,6 +5,14 @@ set -u # DEBUG set -x +wait_for_postgres() { + # thanks https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/ + while ! nc -z $DB_HOST $DB_PORT ; do + sleep 0.5 + done +} + + # TODO there is a conflict between two shared vars # 1. from the original docker compose devicehub-teal # 2. from the new docker compose that integrates all dpp services @@ -33,6 +41,13 @@ gen_env_vars() { INIT_PASSWD="${INIT_PASSWD:-1234}" ADMIN='True' PREDEFINED_TOKEN="${PREDEFINED_TOKEN:-}" + + DB_NAME=${DB_NAME:-devicehub} + DB_USER=${DB_USER:-ereuse} + DB_PASSWORD=${DB_PASSWORD:-ereuse} + DB_HOST=${DB_HOST:-localhost} + DB_PORT=${DB_PORT:-5432} + # specific dpp env vars if [ "${DPP:-}" = 'true' ]; then # fill env vars in this docker entrypoint @@ -210,10 +225,13 @@ deploy() { echo "DOMAIN: ${DOMAIN}" fi - # detect if existing deployment (TODO only works with sqlite) - if [ -f "${program_dir}/db/db.sqlite3" ]; then - echo "INFO: detected EXISTING deployment" + #IMPORTANT: run python manage.py dumpdata --natural-foreign --natural-primary > sqlite3dump.json + # detect if exists a sqlite3 dump + if [ -f "${program_dir}/db/sqlite3dump.json" ]; then + echo "INFO: detected EXISTING sqlite3 deployment. Migrating to postgres" ./manage.py migrate + ./manage.py loaddata ${program_dir}/db/sqltie3dump.json + else # move the migrate thing in docker entrypoint # inspired by https://medium.com/analytics-vidhya/django-with-docker-and-docker-compose-python-part-2-8415976470cc @@ -248,6 +266,7 @@ main() { program_dir='/opt/devicehub-django' cd "${program_dir}" gen_env_vars + wait_for_postgres deploy runserver } -- 2.30.2 From fc11c0ca56197ce29fd204879746822564124716 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Sun, 2 Feb 2025 02:21:19 -0300 Subject: [PATCH 03/18] added dependency for db polling --- docker/devicehub-django.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/devicehub-django.Dockerfile b/docker/devicehub-django.Dockerfile index a676bdd..6b016da 100644 --- a/docker/devicehub-django.Dockerfile +++ b/docker/devicehub-django.Dockerfile @@ -5,6 +5,7 @@ RUN apt update && \ apt-get install -y \ python3-xapian \ python3-psycopg2 \ + netcat-traditional\ git \ sqlite3 \ curl \ -- 2.30.2 From 39ab636154f46f90cac72a42784374173f33dd7f Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Sun, 2 Feb 2025 02:21:57 -0300 Subject: [PATCH 04/18] sourcing .env on docker script --- docker/devicehub-django.entrypoint.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/devicehub-django.entrypoint.sh b/docker/devicehub-django.entrypoint.sh index defaafe..ef3ac86 100644 --- a/docker/devicehub-django.entrypoint.sh +++ b/docker/devicehub-django.entrypoint.sh @@ -5,9 +5,12 @@ set -u # DEBUG set -x +program_dir='/opt/devicehub-django' +. "${program_dir}/.env" + wait_for_postgres() { # thanks https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/ - while ! nc -z $DB_HOST $DB_PORT ; do + while ! nc -z "$DB_HOST" "$DB_PORT" ; do sleep 0.5 done } @@ -263,7 +266,6 @@ runserver() { } main() { - program_dir='/opt/devicehub-django' cd "${program_dir}" gen_env_vars wait_for_postgres -- 2.30.2 From 20649298458649f4fde7186b9c0a51078d92cd47 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Sun, 2 Feb 2025 02:23:35 -0300 Subject: [PATCH 05/18] renaming vars --- .env.example | 6 ++---- dhub/settings.py | 6 +++--- docker-compose.yml | 21 +++++++++------------ docker/devicehub-django.entrypoint.sh | 11 ++++++----- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/.env.example b/.env.example index 38dbcdb..54a19a9 100644 --- a/.env.example +++ b/.env.example @@ -72,12 +72,10 @@ IDHUB_ENABLE_2FACTOR_AUTH=false IDHUB_ENABLE_DOMAIN_CHECKER=false IDHUB_PREDEFINED_TOKEN='27f944ce-3d58-4f48-b068-e4aa95f97c95' - - #POSTGRES VARS DB_NAME="devicehub" DB_USER="ereuse" DB_PASSWORD="ereuse" -DB_DOMAIN=localhost -DB_PORT=8000 +DB_HOST=localhost +DB_PORT=5432 diff --git a/dhub/settings.py b/dhub/settings.py index 3da04de..9ac673a 100644 --- a/dhub/settings.py +++ b/dhub/settings.py @@ -136,9 +136,9 @@ DATABASES = { 'default': { 'ENGINE': os.getenv('DB_ENGINE', 'django.db.backends.postgresql'), 'NAME': os.getenv('DB_NAME', 'devicehub'), - 'USER': os.getenv('DB_USER', 'devicehub'), - 'PASSWORD': os.getenv('DB_PASSWORD', 'devicehub'), - 'HOST': os.getenv('DB_HOST', 'postgres'), + 'USER': os.getenv('DB_USER', 'ereuse'), + 'PASSWORD': os.getenv('DB_PASSWORD', 'ereuse'), + 'HOST': os.getenv('DB_HOST', 'devicehub-postgres'), 'PORT': os.getenv('DB_PORT', '5432'), } } diff --git a/docker-compose.yml b/docker-compose.yml index 0d93468..c514b68 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,24 +21,18 @@ services: ports: - ${DEVICEHUB_PORT:-8000}:${DEVICEHUB_PORT:-8000} depends_on: - - postgres + - devicehub-postgres devicehub-postgres: image: postgres:17 environment: - - DB_NAME=${DB_NAME:-devicehub} - - db_USER=${DB_USER:-devicehub} - - db_PASSWORD=${DB_PASSWORD:-devicehub} + - POSTGRES_DB=${DB_NAME} + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - pg_data:/var/lib/postgresql/data - ports: - - ${DB_PORT}:${DB_PORT} - - - -volumes: - pg_data: - + #ports: + # - ${DB_PORT}:${DB_PORT} # TODO add database service for idhub, meanwhile sqlite @@ -76,3 +70,6 @@ volumes: - 9001:9001 # TODO add database service for idhub, meanwhile sqlite + +volumes: + pg_data: diff --git a/docker/devicehub-django.entrypoint.sh b/docker/devicehub-django.entrypoint.sh index ef3ac86..27aa7d0 100644 --- a/docker/devicehub-django.entrypoint.sh +++ b/docker/devicehub-django.entrypoint.sh @@ -6,6 +6,7 @@ set -u set -x program_dir='/opt/devicehub-django' +#source .env . "${program_dir}/.env" wait_for_postgres() { @@ -45,11 +46,11 @@ gen_env_vars() { ADMIN='True' PREDEFINED_TOKEN="${PREDEFINED_TOKEN:-}" - DB_NAME=${DB_NAME:-devicehub} - DB_USER=${DB_USER:-ereuse} - DB_PASSWORD=${DB_PASSWORD:-ereuse} - DB_HOST=${DB_HOST:-localhost} - DB_PORT=${DB_PORT:-5432} + DB_NAME="${DB_NAME:-devicehub}" + DB_USER="${DB_USER:-ereuse}" + DB_PASSWORD="${DB_PASSWORD:-ereuse}" + DB_HOST="${DB_HOST:-localhost}" + DB_PORT="${DB_PORT:-5432}" # specific dpp env vars if [ "${DPP:-}" = 'true' ]; then -- 2.30.2 From de2a1190ab272628efda7cd3a6673e23e659445a Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Mon, 3 Feb 2025 01:39:46 -0300 Subject: [PATCH 06/18] moved vars in file --- .env.example | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 54a19a9..37d2464 100644 --- a/.env.example +++ b/.env.example @@ -32,6 +32,16 @@ DEVICEHUB_ALLOWED_HOSTS=${DEVICEHUB_DOMAIN},${DEVICEHUB_DOMAIN}:${DEVICEHUB_PORT #EVIDENCES_DIR=/path/to/TODO #DEMO_IDHUB_DOMAIN='idhub.example.org' +### +# DEVICEHUB-POSTGRES + +### +DB_NAME="devicehub" +DB_USER="ereuse" +DB_PASSWORD="ereuse" +DB_HOST=localhost +DB_PORT=5432 + #### # IDHUB #### @@ -72,10 +82,3 @@ IDHUB_ENABLE_2FACTOR_AUTH=false IDHUB_ENABLE_DOMAIN_CHECKER=false IDHUB_PREDEFINED_TOKEN='27f944ce-3d58-4f48-b068-e4aa95f97c95' -#POSTGRES VARS - -DB_NAME="devicehub" -DB_USER="ereuse" -DB_PASSWORD="ereuse" -DB_HOST=localhost -DB_PORT=5432 -- 2.30.2 From 48bea36e492c89ae6a898c2484bb1c821b570390 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Mon, 3 Feb 2025 01:59:57 -0300 Subject: [PATCH 07/18] delete after loading sqlite old data --- .gitignore | 1 + docker/devicehub-django.entrypoint.sh | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 5fd5429..5a4f26b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ __pycache__/ # the following could be autogenerated by devicehub db.sqlite3 example/snapshots/snapshot_workbench-script_verifiable-credential.json +sqlite3dump.json diff --git a/docker/devicehub-django.entrypoint.sh b/docker/devicehub-django.entrypoint.sh index 27aa7d0..2f064e3 100644 --- a/docker/devicehub-django.entrypoint.sh +++ b/docker/devicehub-django.entrypoint.sh @@ -229,12 +229,14 @@ deploy() { echo "DOMAIN: ${DOMAIN}" fi - #IMPORTANT: run python manage.py dumpdata --natural-foreign --natural-primary > sqlite3dump.json + #IMPORTANT: run python manage.py dumpdata --natural-foreign --natural-primary > sqlite3dump.json on root folder # detect if exists a sqlite3 dump - if [ -f "${program_dir}/db/sqlite3dump.json" ]; then + if [ -f "${program_dir}/sqlite3dump.json" ]; then echo "INFO: detected EXISTING sqlite3 deployment. Migrating to postgres" ./manage.py migrate - ./manage.py loaddata ${program_dir}/db/sqltie3dump.json + ./manage.py loaddata ${program_dir}/sqlite3dump.json + rm "${program_dir}/sqlite3dump.json" + echo "INFO: Old sqlite data loaded successfully" else # move the migrate thing in docker entrypoint -- 2.30.2 From b0333092747a865471b97f1afa9741b86be33e0c Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Mon, 3 Feb 2025 02:48:14 -0300 Subject: [PATCH 08/18] changed deployment logic to config_phase --- docker/devicehub-django.entrypoint.sh | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/docker/devicehub-django.entrypoint.sh b/docker/devicehub-django.entrypoint.sh index 2f064e3..8f6f801 100644 --- a/docker/devicehub-django.entrypoint.sh +++ b/docker/devicehub-django.entrypoint.sh @@ -187,6 +187,7 @@ config_phase() { init_flagfile="${program_dir}/already_configured" if [ ! -f "${init_flagfile}" ]; then + echo "INFO: detected NEW deployment" # non DL user (only for the inventory) ./manage.py add_institution "${INIT_ORG}" # TODO: one error on add_user, and you don't add user anymore @@ -209,6 +210,8 @@ config_phase() { # remain next command as the last operation for this if conditional touch "${init_flagfile}" + else + echo "INFO: detected PREVIOUS deployment" fi } @@ -229,22 +232,10 @@ deploy() { echo "DOMAIN: ${DOMAIN}" fi - #IMPORTANT: run python manage.py dumpdata --natural-foreign --natural-primary > sqlite3dump.json on root folder - # detect if exists a sqlite3 dump - if [ -f "${program_dir}/sqlite3dump.json" ]; then - echo "INFO: detected EXISTING sqlite3 deployment. Migrating to postgres" - ./manage.py migrate - ./manage.py loaddata ${program_dir}/sqlite3dump.json - rm "${program_dir}/sqlite3dump.json" - echo "INFO: Old sqlite data loaded successfully" - - else - # move the migrate thing in docker entrypoint - # inspired by https://medium.com/analytics-vidhya/django-with-docker-and-docker-compose-python-part-2-8415976470cc - echo "INFO detected NEW deployment" - ./manage.py migrate - config_phase - fi + # move the migrate thing in docker entrypoint + # inspired by https://medium.com/analytics-vidhya/django-with-docker-and-docker-compose-python-part-2-8415976470cc + ./manage.py migrate + config_phase } runserver() { -- 2.30.2 From 3c1681caa8549dd33e5ab44a01e53e08a668f7d2 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Mon, 3 Feb 2025 02:52:25 -0300 Subject: [PATCH 09/18] deleted obsolete gitignore files --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 5a4f26b..4fb6b9f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,4 @@ __pycache__/ .env # the following could be autogenerated by devicehub -db.sqlite3 example/snapshots/snapshot_workbench-script_verifiable-credential.json -sqlite3dump.json -- 2.30.2 From 2a36ce3ecee5aaa2d80aeef5deb80f8bc599be75 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Tue, 18 Feb 2025 16:37:49 -0300 Subject: [PATCH 10/18] moved db check to docker compose file --- docker-compose.yml | 17 ++++++++++++++++- docker/devicehub-django.entrypoint.sh | 21 ++------------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c514b68..5bcb5fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,13 +15,21 @@ services: - DEMO_IDHUB_PREDEFINED_TOKEN=${IDHUB_PREDEFINED_TOKEN:-} - PREDEFINED_TOKEN=${PREDEFINED_TOKEN:-} - DPP=${DPP:-false} + - DB_PORT=${DB_PORT:-5432} + - DB_HOST=${DB_HOST:-devicehub-postgres} + - DB_NAME=${DB_NAME} + - DB_USER=${DB_USER} + - DB_PASSWORD=${DB_PASSWORD} # TODO manage volumes dev vs prod volumes: - .:/opt/devicehub-django ports: - ${DEVICEHUB_PORT:-8000}:${DEVICEHUB_PORT:-8000} + #https://docs.docker.com/compose/how-tos/startup-order/ depends_on: - - devicehub-postgres + devicehub-postgres: + condition: service_healthy + restart: true devicehub-postgres: image: postgres:17 @@ -31,6 +39,13 @@ services: - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - pg_data:/var/lib/postgresql/data + healthcheck: + # https://docs.docker.com/compose/how-tos/startup-order/ + test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] + start_period: 1s + interval: 1s + timeout: 10s + retries: 10 #ports: # - ${DB_PORT}:${DB_PORT} diff --git a/docker/devicehub-django.entrypoint.sh b/docker/devicehub-django.entrypoint.sh index 8f6f801..20b8802 100644 --- a/docker/devicehub-django.entrypoint.sh +++ b/docker/devicehub-django.entrypoint.sh @@ -5,18 +5,6 @@ set -u # DEBUG set -x -program_dir='/opt/devicehub-django' -#source .env -. "${program_dir}/.env" - -wait_for_postgres() { - # thanks https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/ - while ! nc -z "$DB_HOST" "$DB_PORT" ; do - sleep 0.5 - done -} - - # TODO there is a conflict between two shared vars # 1. from the original docker compose devicehub-teal # 2. from the new docker compose that integrates all dpp services @@ -46,12 +34,6 @@ gen_env_vars() { ADMIN='True' PREDEFINED_TOKEN="${PREDEFINED_TOKEN:-}" - DB_NAME="${DB_NAME:-devicehub}" - DB_USER="${DB_USER:-ereuse}" - DB_PASSWORD="${DB_PASSWORD:-ereuse}" - DB_HOST="${DB_HOST:-localhost}" - DB_PORT="${DB_PORT:-5432}" - # specific dpp env vars if [ "${DPP:-}" = 'true' ]; then # fill env vars in this docker entrypoint @@ -260,9 +242,10 @@ runserver() { } main() { + + program_dir='/opt/devicehub-django' cd "${program_dir}" gen_env_vars - wait_for_postgres deploy runserver } -- 2.30.2 From 88f694576af4a88b6e70a99dc954f01d66cea875 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Tue, 18 Feb 2025 16:39:13 -0300 Subject: [PATCH 11/18] changed docker host name to service name --- .env.example | 2 +- docker-compose.yml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 37d2464..9da0c5b 100644 --- a/.env.example +++ b/.env.example @@ -39,7 +39,7 @@ DEVICEHUB_ALLOWED_HOSTS=${DEVICEHUB_DOMAIN},${DEVICEHUB_DOMAIN}:${DEVICEHUB_PORT DB_NAME="devicehub" DB_USER="ereuse" DB_PASSWORD="ereuse" -DB_HOST=localhost +DB_HOST="devicehub-postgres" DB_PORT=5432 #### diff --git a/docker-compose.yml b/docker-compose.yml index 5bcb5fe..8419505 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,7 +25,6 @@ services: - .:/opt/devicehub-django ports: - ${DEVICEHUB_PORT:-8000}:${DEVICEHUB_PORT:-8000} - #https://docs.docker.com/compose/how-tos/startup-order/ depends_on: devicehub-postgres: condition: service_healthy -- 2.30.2 From 59c94f7b524b7b2404461d053fc7c1a7198d1430 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Tue, 18 Feb 2025 21:21:50 -0300 Subject: [PATCH 12/18] changed dependency to pip --- docker/devicehub-django.Dockerfile | 2 -- requirements.txt | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docker/devicehub-django.Dockerfile b/docker/devicehub-django.Dockerfile index 6b016da..202d876 100644 --- a/docker/devicehub-django.Dockerfile +++ b/docker/devicehub-django.Dockerfile @@ -4,10 +4,8 @@ FROM python:3.11.10-slim-bookworm RUN apt update && \ apt-get install -y \ python3-xapian \ - python3-psycopg2 \ netcat-traditional\ git \ - sqlite3 \ curl \ jq \ time \ diff --git a/requirements.txt b/requirements.txt index f12a20c..608ede9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,4 +14,4 @@ json-repair==0.30.0 setuptools==65.5.1 requests==2.32.3 wheel==0.45.1 - +psycopg2-binary==2.9.10 -- 2.30.2 From 69d45e3af3cf91fac4c0747e5a6cf32ee3da2c36 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Wed, 19 Feb 2025 18:45:34 -0300 Subject: [PATCH 13/18] postgres added to idhub profile --- .env.example | 7 +++++++ docker-compose.yml | 26 +++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 9da0c5b..1460594 100644 --- a/.env.example +++ b/.env.example @@ -82,3 +82,10 @@ IDHUB_ENABLE_2FACTOR_AUTH=false IDHUB_ENABLE_DOMAIN_CHECKER=false IDHUB_PREDEFINED_TOKEN='27f944ce-3d58-4f48-b068-e4aa95f97c95' +# IDHUB- Postgres +### +IDHUB_DB_NAME="idhub" +IDHUB_DB_USER="ereuse" +IDHUB_DB_PASSWORD="ereuse" +IDHUB_DB_HOST="idhub-postgres" +IDHUB_DB_PORT=5432 diff --git a/docker-compose.yml b/docker-compose.yml index 8419505..eb32cc3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -55,6 +55,9 @@ services: profiles: [idhub] init: true image: farga.pangea.org/ereuse/idhub/latest + build: + context: /path/to/your/idhub/directory + dockerfile: /path/to/your/idhub/dockerfile environment: - DOMAIN=${IDHUB_DOMAIN:-localhost} - ALLOWED_HOSTS=${IDHUB_ALLOWED_HOSTS:-$IDHUB_DOMAIN} @@ -82,8 +85,29 @@ services: - SYNC_ORG_DEV=${IDHUB_SYNC_ORG_DEV} ports: - 9001:9001 + depends_on: + idhub-postgres: + condition: service_healthy + restart: true + + idhub-postgres: + profiles: [idhub] + image: postgres:17 + environment: + - POSTGRES_DB=${IDHUB_DB_NAME} + - POSTGRES_USER=${IDHUB_DB_USER} + - POSTGRES_PASSWORD=${IDHUB_DB_PASSWORD} + volumes: + - idhub_pg_data:/var/lib/postgresql/data + healthcheck: + # https://docs.docker.com/compose/how-tos/startup-order/ + test: ["CMD-SHELL", "pg_isready -U ${IDHUB_DB_USER} -d ${IDHUB_DB_NAME}"] + start_period: 1s + interval: 1s + timeout: 10s + retries: 10 - # TODO add database service for idhub, meanwhile sqlite volumes: pg_data: + idhub_pg_data: -- 2.30.2 From 4a45e78dcaa501d37ae36bc9eec3eb0a3c2e2bfc Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Thu, 20 Feb 2025 02:08:40 -0300 Subject: [PATCH 14/18] docker compose onto multiple files --- docker-compose.override.prod.yml | 21 +++++++++++++++++ docker-compose.override.yml | 30 ++++++++++++++++++++++++ docker-compose.yml | 39 +++++++++++--------------------- 3 files changed, 64 insertions(+), 26 deletions(-) create mode 100644 docker-compose.override.prod.yml create mode 100644 docker-compose.override.yml diff --git a/docker-compose.override.prod.yml b/docker-compose.override.prod.yml new file mode 100644 index 0000000..9bd0237 --- /dev/null +++ b/docker-compose.override.prod.yml @@ -0,0 +1,21 @@ +# usage: docker compose -f docker-compose.yml -f docker-compose.override.prod.yml up +# https://docs.docker.com/compose/how-tos/multiple-compose-files/merge/ + +services: + devicehub-django: + image: farga.pangea.org/ereuse/devicehub-django/latest + volumes: + - devicehub_data:/opt/devicehub-django + environment: + - DEBUG=false + + idhub: + image: farga.pangea.org/ereuse/idhub:latest + volumes: + - idhub_data:/opt/idhub + environment: + - DEBUG=false + +volumes: + devicehub_data: + idhub_data: diff --git a/docker-compose.override.yml b/docker-compose.override.yml new file mode 100644 index 0000000..1ea6999 --- /dev/null +++ b/docker-compose.override.yml @@ -0,0 +1,30 @@ +#Default override compose file for dev options + +services: + devicehub-django: + build: + context: . + dockerfile: docker/devicehub-django.Dockerfile + volumes: + - .:/opt/devicehub-django # bind mount for local development + environment: + - DEBUG=true + + devicehub-postgres: + ports: + - 5432:5432 + + + idhub: + build: + context: /home/rthomas/ereuse/IdHub + dockerfile: /home/rthomas/ereuse/IdHub/docker/idhub.Dockerfile + volumes: + - /home/rthomas/ereuse/IdHub:/opt/idhub + environment: + - DEMO=true + - DEBUG=true + + idhub-postgres: + ports: + - 5433:5432 diff --git a/docker-compose.yml b/docker-compose.yml index eb32cc3..f8a9c19 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,7 @@ services: devicehub-django: init: true - image: farga.pangea.org/ereuse/devicehub-django/latest - build: - context: . - dockerfile: docker/devicehub-django.Dockerfile environment: - - DEBUG=${DEBUG:-false} - DOMAIN=${DEVICEHUB_DOMAIN:-localhost} - PORT=${DEVICEHUB_PORT:-8000} - ALLOWED_HOSTS=${DEVICEHUB_ALLOWED_HOSTS:-$DEVICEHUB_DOMAIN} @@ -20,15 +15,12 @@ services: - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - # TODO manage volumes dev vs prod - volumes: - - .:/opt/devicehub-django ports: - ${DEVICEHUB_PORT:-8000}:${DEVICEHUB_PORT:-8000} depends_on: devicehub-postgres: - condition: service_healthy - restart: true + condition: service_healthy + restart: true devicehub-postgres: image: postgres:17 @@ -39,29 +31,19 @@ services: volumes: - pg_data:/var/lib/postgresql/data healthcheck: - # https://docs.docker.com/compose/how-tos/startup-order/ test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] start_period: 1s interval: 1s timeout: 10s retries: 10 - #ports: - # - ${DB_PORT}:${DB_PORT} - - # TODO add database service for idhub, meanwhile sqlite idhub: - # https://docs.docker.com/compose/how-tos/profiles/ profiles: [idhub] init: true - image: farga.pangea.org/ereuse/idhub/latest - build: - context: /path/to/your/idhub/directory - dockerfile: /path/to/your/idhub/dockerfile environment: + - TZ=America/Argentina/Buenos_Aires - DOMAIN=${IDHUB_DOMAIN:-localhost} - ALLOWED_HOSTS=${IDHUB_ALLOWED_HOSTS:-$IDHUB_DOMAIN} - - DEBUG=true - DEMO=${DEMO:-false} - INITIAL_ADMIN_EMAIL=${IDHUB_ADMIN_EMAIL} - INITIAL_ADMIN_PASSWORD=${IDHUB_ADMIN_PASSWD} @@ -83,12 +65,18 @@ services: - EMAIL_BACKEND=${IDHUB_EMAIL_BACKEND} - SUPPORTED_CREDENTIALS=['Snapshot'] - SYNC_ORG_DEV=${IDHUB_SYNC_ORG_DEV} + - TZ=UTC-3 + - DB_PORT=${IDHUB_DB_PORT:-5432} + - DB_HOST=${IDHUB_DB_HOST:-devicehub-postgres} + - DB_NAME=${IDHUB_DB_NAME} + - DB_USER=${IDHUB_DB_USER} + - DB_PASSWORD=${IDHUB_DB_PASSWORD} ports: - 9001:9001 depends_on: - idhub-postgres: - condition: service_healthy - restart: true + idhub-postgres: + condition: service_healthy + restart: true idhub-postgres: profiles: [idhub] @@ -99,15 +87,14 @@ services: - POSTGRES_PASSWORD=${IDHUB_DB_PASSWORD} volumes: - idhub_pg_data:/var/lib/postgresql/data - healthcheck: # https://docs.docker.com/compose/how-tos/startup-order/ + healthcheck: test: ["CMD-SHELL", "pg_isready -U ${IDHUB_DB_USER} -d ${IDHUB_DB_NAME}"] start_period: 1s interval: 1s timeout: 10s retries: 10 - volumes: pg_data: idhub_pg_data: -- 2.30.2 From 5abc78ba4c600d8b52bf2c91a4e20cb6916dbe8f Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Thu, 20 Feb 2025 02:09:00 -0300 Subject: [PATCH 15/18] timezone var for devicehub --- .env.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.env.example b/.env.example index 1460594..880409d 100644 --- a/.env.example +++ b/.env.example @@ -32,6 +32,9 @@ DEVICEHUB_ALLOWED_HOSTS=${DEVICEHUB_DOMAIN},${DEVICEHUB_DOMAIN}:${DEVICEHUB_PORT #EVIDENCES_DIR=/path/to/TODO #DEMO_IDHUB_DOMAIN='idhub.example.org' +#https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +TIME_ZONE='Europe/Madrid' + ### # DEVICEHUB-POSTGRES -- 2.30.2 From aa288aa69002802e7ef9e0a78e0cf9c350fec58a Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Thu, 20 Feb 2025 17:11:21 -0300 Subject: [PATCH 16/18] changed idhub path to example --- docker-compose.override.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 1ea6999..5522107 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -14,13 +14,13 @@ services: ports: - 5432:5432 - idhub: + image: farga.pangea.org/ereuse/idhub:latest build: - context: /home/rthomas/ereuse/IdHub - dockerfile: /home/rthomas/ereuse/IdHub/docker/idhub.Dockerfile + context: /path/to/idhub/directory + dockerfile: /path/to/idhub/dockerfile volumes: - - /home/rthomas/ereuse/IdHub:/opt/idhub + - /path/to/idhub/directory:/opt/idhub environment: - DEMO=true - DEBUG=true -- 2.30.2 From 0ca9cc7b2f028eb6cc7703bcf5511db568f7917b Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Thu, 20 Feb 2025 17:33:47 -0300 Subject: [PATCH 17/18] deleted obsolet lines --- docker-compose.yml | 2 -- docker/devicehub-django.Dockerfile | 1 - docker/devicehub-django.entrypoint.sh | 1 - 3 files changed, 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f8a9c19..2737425 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,7 +41,6 @@ services: profiles: [idhub] init: true environment: - - TZ=America/Argentina/Buenos_Aires - DOMAIN=${IDHUB_DOMAIN:-localhost} - ALLOWED_HOSTS=${IDHUB_ALLOWED_HOSTS:-$IDHUB_DOMAIN} - DEMO=${DEMO:-false} @@ -65,7 +64,6 @@ services: - EMAIL_BACKEND=${IDHUB_EMAIL_BACKEND} - SUPPORTED_CREDENTIALS=['Snapshot'] - SYNC_ORG_DEV=${IDHUB_SYNC_ORG_DEV} - - TZ=UTC-3 - DB_PORT=${IDHUB_DB_PORT:-5432} - DB_HOST=${IDHUB_DB_HOST:-devicehub-postgres} - DB_NAME=${IDHUB_DB_NAME} diff --git a/docker/devicehub-django.Dockerfile b/docker/devicehub-django.Dockerfile index 202d876..7f3b176 100644 --- a/docker/devicehub-django.Dockerfile +++ b/docker/devicehub-django.Dockerfile @@ -4,7 +4,6 @@ FROM python:3.11.10-slim-bookworm RUN apt update && \ apt-get install -y \ python3-xapian \ - netcat-traditional\ git \ curl \ jq \ diff --git a/docker/devicehub-django.entrypoint.sh b/docker/devicehub-django.entrypoint.sh index 20b8802..0bf3720 100644 --- a/docker/devicehub-django.entrypoint.sh +++ b/docker/devicehub-django.entrypoint.sh @@ -242,7 +242,6 @@ runserver() { } main() { - program_dir='/opt/devicehub-django' cd "${program_dir}" gen_env_vars -- 2.30.2 From ef6727b350b510c8400161f9cfc16554471f18b9 Mon Sep 17 00:00:00 2001 From: Thomas Rusiecki Date: Thu, 20 Feb 2025 19:02:29 -0300 Subject: [PATCH 18/18] docker env comment for readability --- docker-compose.yml | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2737425..7411cc4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,19 +2,27 @@ services: devicehub-django: init: true environment: + # General - DOMAIN=${DEVICEHUB_DOMAIN:-localhost} - PORT=${DEVICEHUB_PORT:-8000} - ALLOWED_HOSTS=${DEVICEHUB_ALLOWED_HOSTS:-$DEVICEHUB_DOMAIN} + + # Demo settings - DEMO=${DEMO:-false} - DEMO_IDHUB_DOMAIN=${DEMO_IDHUB_DOMAIN:-} - DEMO_IDHUB_PREDEFINED_TOKEN=${IDHUB_PREDEFINED_TOKEN:-} + + # Auth & Security - PREDEFINED_TOKEN=${PREDEFINED_TOKEN:-} - DPP=${DPP:-false} - - DB_PORT=${DB_PORT:-5432} + + # DB vars - DB_HOST=${DB_HOST:-devicehub-postgres} + - DB_PORT=${DB_PORT:-5432} - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} + ports: - ${DEVICEHUB_PORT:-8000}:${DEVICEHUB_PORT:-8000} depends_on: @@ -41,20 +49,20 @@ services: profiles: [idhub] init: true environment: + # General - DOMAIN=${IDHUB_DOMAIN:-localhost} - ALLOWED_HOSTS=${IDHUB_ALLOWED_HOSTS:-$IDHUB_DOMAIN} - - DEMO=${DEMO:-false} + - DEBUG=true + - DEMO=${IDHUB_DEMO:-} + + # Admin & User - INITIAL_ADMIN_EMAIL=${IDHUB_ADMIN_EMAIL} - INITIAL_ADMIN_PASSWORD=${IDHUB_ADMIN_PASSWD} - CREATE_TEST_USERS=true - - ENABLE_EMAIL=${IDHUB_ENABLE_EMAIL:-true} - - ENABLE_2FACTOR_AUTH=${IDHUB_ENABLE_2FACTOR_AUTH:-true} + + # Email Configuration + - ENABLE_EMAIL=${IDHUB_ENABLE_EMAIL} - ENABLE_DOMAIN_CHECKER=${IDHUB_ENABLE_DOMAIN_CHECKER:-true} - - PREDEFINED_TOKEN=${IDHUB_PREDEFINED_TOKEN:-} - - SECRET_KEY=${IDHUB_SECRET_KEY:-publicsecretisnotsecureVtmKBfxpVV47PpBCF2Nzz2H6qnbd} - - STATIC_ROOT=${IDHUB_STATIC_ROOT:-/static/} - - MEDIA_ROOT=${IDHUB_MEDIA_ROOT:-/media/} - - PORT=${IDHUB_PORT:-9001} - DEFAULT_FROM_EMAIL=${IDHUB_DEFAULT_FROM_EMAIL} - EMAIL_HOST=${IDHUB_EMAIL_HOST} - EMAIL_HOST_USER=${IDHUB_EMAIL_HOST_USER} @@ -62,13 +70,26 @@ services: - EMAIL_PORT=${IDHUB_EMAIL_PORT} - EMAIL_USE_TLS=${IDHUB_EMAIL_USE_TLS} - EMAIL_BACKEND=${IDHUB_EMAIL_BACKEND} - - SUPPORTED_CREDENTIALS=['Snapshot'] + + # Auth & Security + - SECRET_KEY=${IDHUB_SECRET_KEY:-publicsecretisnotsecureVtmKBfxpVV47PpBCF2Nzz2H6qnbd} + - PREDEFINED_TOKEN=${IDHUB_PREDEFINED_TOKEN:-} + - ENABLE_2FACTOR_AUTH=${IDHUB_ENABLE_2FACTOR_AUTH:-true} + + # App - SYNC_ORG_DEV=${IDHUB_SYNC_ORG_DEV} + - STATIC_ROOT=${IDHUB_STATIC_ROOT:-/static/} + - MEDIA_ROOT=${IDHUB_MEDIA_ROOT:-/media/} + - PORT=${IDHUB_PORT:-9001} + - SUPPORTED_CREDENTIALS=${IDHUB_SUPPORTED_CREDENTIALS:-} + + # DB vars - DB_PORT=${IDHUB_DB_PORT:-5432} - DB_HOST=${IDHUB_DB_HOST:-devicehub-postgres} - DB_NAME=${IDHUB_DB_NAME} - DB_USER=${IDHUB_DB_USER} - DB_PASSWORD=${IDHUB_DB_PASSWORD} + ports: - 9001:9001 depends_on: -- 2.30.2