From 1bc604a40ad42f5674d5a3b84361410bbf3c9097 Mon Sep 17 00:00:00 2001 From: David Jimenez Date: Wed, 12 Nov 2025 17:08:30 -0600 Subject: [PATCH 1/6] Docker updates for Admin API 2.3 - Part 1 --- .github/workflows/on-prerelease.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/on-prerelease.yml b/.github/workflows/on-prerelease.yml index 45e01c777..addba5664 100644 --- a/.github/workflows/on-prerelease.yml +++ b/.github/workflows/on-prerelease.yml @@ -326,11 +326,12 @@ jobs: PACKAGEVERSION=${REF} fi - if [[ $PACKAGEVERSION =~ "alpha" ]] + if [[ $PACKAGEVERSION =~ "pre" ]] then # Pre-releases get the tag "pre" APITAGS="${{ env.IMAGE_NAME }}:pre" DBTAGS="${{ env.DATABASE_IMAGE_NAME }}:pre" + DBTAGS6x="${{ env.DATABASE_IMAGE_NAME }}:pre-1.3" else # Releases get the version, plus shortened form for minor release. # We are not using shortened form for major or using "latest" @@ -343,6 +344,7 @@ jobs: SEMVERSION=${PACKAGEVERSION:1} # strip off the leading 'v' echo "APITAGS=$APITAGS" >> $GITHUB_OUTPUT echo "DBTAGS=$DBTAGS" >> $GITHUB_OUTPUT + echo "DBTAGS6x=$DBTAGS6x" >> $GITHUB_OUTPUT echo "VERSION=$SEMVERSION" >> $GITHUB_OUTPUT - name: Log in to Docker Hub @@ -384,7 +386,7 @@ jobs: with: images: ${{ env.DATABASE_IMAGE_NAME }} - - name: Build and push admin api database image + - name: Build and push admin api database image 7.x uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0 with: context: "{{defaultContext}}:Docker/Settings/V2/DB-Admin/pgsql" @@ -395,3 +397,16 @@ jobs: tags: ${{ steps.prepare-tags.outputs.DBTAGS }} labels: ${{ steps.metadatabase.outputs.labels }} push: true + + - name: Build and push admin api database image 6.x + uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0 + if: startsWith(github.event.release.tag_name, 'Pre-Release') or startsWith(github.event.release.tag_name, 'v1.') + with: + context: "{{defaultContext}}:Docker/Settings/V1/DB-Admin/pgsql" + cache-from: type=registry,ref=${{ env.DATABASE_IMAGE_NAME }}:pre-1.3 + cache-to: type=inline + build-args: ADMIN_API_VERSION=${{ steps.prepare-tags.outputs.VERSION }} + file: Dockerfile + tags: ${{ steps.prepare-tags.outputs.DBTAGS6x }} + labels: ${{ steps.metadatabase.outputs.labels }} + push: true From 46863a10260b8869984e9165b42a5f9260d666d0 Mon Sep 17 00:00:00 2001 From: David Jimenez Date: Thu, 13 Nov 2025 15:41:42 -0600 Subject: [PATCH 2/6] Change tag for 6x and fixes if condition --- .github/workflows/on-prerelease.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/on-prerelease.yml b/.github/workflows/on-prerelease.yml index addba5664..b2f6833c4 100644 --- a/.github/workflows/on-prerelease.yml +++ b/.github/workflows/on-prerelease.yml @@ -331,7 +331,7 @@ jobs: # Pre-releases get the tag "pre" APITAGS="${{ env.IMAGE_NAME }}:pre" DBTAGS="${{ env.DATABASE_IMAGE_NAME }}:pre" - DBTAGS6x="${{ env.DATABASE_IMAGE_NAME }}:pre-1.3" + DBTAGS6x="${{ env.DATABASE_IMAGE_NAME }}:pre-for-6.2" else # Releases get the version, plus shortened form for minor release. # We are not using shortened form for major or using "latest" @@ -400,10 +400,10 @@ jobs: - name: Build and push admin api database image 6.x uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0 - if: startsWith(github.event.release.tag_name, 'Pre-Release') or startsWith(github.event.release.tag_name, 'v1.') + if: startsWith(github.event.release.tag_name, 'Pre-Release') || startsWith(github.event.release.tag_name, 'v1.') with: context: "{{defaultContext}}:Docker/Settings/V1/DB-Admin/pgsql" - cache-from: type=registry,ref=${{ env.DATABASE_IMAGE_NAME }}:pre-1.3 + cache-from: type=registry,ref=${{ env.DATABASE_IMAGE_NAME }}:pre-for-6.2 cache-to: type=inline build-args: ADMIN_API_VERSION=${{ steps.prepare-tags.outputs.VERSION }} file: Dockerfile From 4dd9af9a8d1b1fd840e1ec39a7d593353f8d1439 Mon Sep 17 00:00:00 2001 From: David Jimenez Date: Mon, 17 Nov 2025 15:46:35 -0600 Subject: [PATCH 3/6] Reviewing compose files. --- Docker/V1/Compose/pgsql/compose-build-binaries.yml | 4 +--- .../compose-build-binaries-multi-tenant.yml | 12 ++---------- .../compose-build-idp-binaries-multi-tenant.yml | 12 ++---------- .../pgsql/SingleTenant/compose-build-binaries.yml | 6 +----- .../SingleTenant/compose-build-idp-binaries.yml | 6 +----- .../Compose/pgsql/SingleTenant/compose-build-ods.yml | 2 +- 6 files changed, 8 insertions(+), 34 deletions(-) diff --git a/Docker/V1/Compose/pgsql/compose-build-binaries.yml b/Docker/V1/Compose/pgsql/compose-build-binaries.yml index 85ae8de46..6d4030451 100644 --- a/Docker/V1/Compose/pgsql/compose-build-binaries.yml +++ b/Docker/V1/Compose/pgsql/compose-build-binaries.yml @@ -78,9 +78,7 @@ services: retries: 3 db-admin: - build: - context: ../../../Settings/V1/DB-Admin/pgsql/ - dockerfile: Dockerfile + image: edfialliance/ods-admin-api-db:pre-for-6.2 environment: POSTGRES_USER: "${POSTGRES_USER}" POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" diff --git a/Docker/V2/Compose/pgsql/MultiTenant/compose-build-binaries-multi-tenant.yml b/Docker/V2/Compose/pgsql/MultiTenant/compose-build-binaries-multi-tenant.yml index 4959d1188..f82c2a5f3 100644 --- a/Docker/V2/Compose/pgsql/MultiTenant/compose-build-binaries-multi-tenant.yml +++ b/Docker/V2/Compose/pgsql/MultiTenant/compose-build-binaries-multi-tenant.yml @@ -72,11 +72,7 @@ services: retries: 3 db-admin-tenant1: - build: - context: ../../../../Settings/V2/DB-Admin/pgsql/ - dockerfile: Dockerfile - args: - ADMIN_API_VERSION: "${ADMIN_API_VERSION:-2.2.0}" + image: edfialliance/ods-admin-api-db:pre environment: ADMIN_API_VERSION: ${ADMIN_API_VERSION} POSTGRES_USER: "${POSTGRES_USER}" @@ -93,11 +89,7 @@ services: retries: 3 db-admin-tenant2: - build: - context: ../../../../Settings/V2/DB-Admin/pgsql/ - dockerfile: Dockerfile - args: - ADMIN_API_VERSION: "${ADMIN_API_VERSION:-2.2.0}" + image: edfialliance/ods-admin-api-db:pre environment: ADMIN_API_VERSION: ${ADMIN_API_VERSION} POSTGRES_USER: "${POSTGRES_USER}" diff --git a/Docker/V2/Compose/pgsql/MultiTenant/compose-build-idp-binaries-multi-tenant.yml b/Docker/V2/Compose/pgsql/MultiTenant/compose-build-idp-binaries-multi-tenant.yml index 24d54b6c7..3df35e8cb 100644 --- a/Docker/V2/Compose/pgsql/MultiTenant/compose-build-idp-binaries-multi-tenant.yml +++ b/Docker/V2/Compose/pgsql/MultiTenant/compose-build-idp-binaries-multi-tenant.yml @@ -74,11 +74,7 @@ services: retries: 3 db-admin-tenant1: - build: - context: ../../../../Settings/V2/DB-Admin/pgsql/ - dockerfile: Dockerfile - args: - ADMIN_API_VERSION: "${ADMIN_API_VERSION:-2.2.0}" + image: edfialliance/ods-admin-api-db:pre environment: ADMIN_API_VERSION: ${ADMIN_API_VERSION} POSTGRES_USER: "${POSTGRES_USER}" @@ -95,11 +91,7 @@ services: retries: 3 db-admin-tenant2: - build: - context: ../../../../Settings/V2/DB-Admin/pgsql/ - dockerfile: Dockerfile - args: - ADMIN_API_VERSION: "${ADMIN_API_VERSION:-2.2.0}" + image: edfialliance/ods-admin-api-db:pre environment: ADMIN_API_VERSION: ${ADMIN_API_VERSION} POSTGRES_USER: "${POSTGRES_USER}" diff --git a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-binaries.yml b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-binaries.yml index b61225bfd..18fff8816 100644 --- a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-binaries.yml +++ b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-binaries.yml @@ -69,11 +69,7 @@ services: retries: 3 db-admin: - build: - context: ../../../../Settings/V2/DB-Admin/pgsql/ - dockerfile: Dockerfile - args: - ADMIN_API_VERSION: "${ADMIN_API_VERSION:-2.2.0}" + image: edfialliance/ods-admin-api-db:pre environment: ADMIN_API_VERSION: ${ADMIN_API_VERSION} POSTGRES_USER: "${POSTGRES_USER}" diff --git a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-idp-binaries.yml b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-idp-binaries.yml index d709b23f4..93782d426 100644 --- a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-idp-binaries.yml +++ b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-idp-binaries.yml @@ -69,11 +69,7 @@ services: retries: 3 db-admin: - build: - context: ../../../../Settings/V2/DB-Admin/pgsql/ - dockerfile: Dockerfile - args: - ADMIN_API_VERSION: "${ADMIN_API_VERSION:-2.2.0}" + image: edfialliance/ods-admin-api-db:pre environment: ADMIN_API_VERSION: ${ADMIN_API_VERSION} POSTGRES_USER: "${POSTGRES_USER}" diff --git a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml index 79f25f09a..ce83ee5a1 100644 --- a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml +++ b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml @@ -40,7 +40,7 @@ services: POSTGRES_USER: "${POSTGRES_USER}" TPDM_ENABLED: "${TPDM_ENABLED:-true}" volumes: - - ${LOGS_FOLDER}:/app/logs + - ${LOGS_FOLDER:-./logs}:/app/logs depends_on: - db-ods - db-admin From 8472377edd6495567be5d87cbeb60f22881b3968 Mon Sep 17 00:00:00 2001 From: David Jimenez Date: Mon, 17 Nov 2025 16:17:11 -0600 Subject: [PATCH 4/6] Tests fix --- Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml index ce83ee5a1..79f25f09a 100644 --- a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml +++ b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml @@ -40,7 +40,7 @@ services: POSTGRES_USER: "${POSTGRES_USER}" TPDM_ENABLED: "${TPDM_ENABLED:-true}" volumes: - - ${LOGS_FOLDER:-./logs}:/app/logs + - ${LOGS_FOLDER}:/app/logs depends_on: - db-ods - db-admin From 3ea179f4d7ac1a6d5697521b422388d98ebdec5e Mon Sep 17 00:00:00 2001 From: David Jimenez Date: Tue, 18 Nov 2025 12:04:02 -0600 Subject: [PATCH 5/6] Removes Ods Api docker containers --- .../workflows/api-e2e-mssql-multitenant.yml | 1 - .../workflows/api-e2e-mssql-singletenant.yml | 1 - .../workflows/api-e2e-pgsql-multitenant.yml | 1 - .../workflows/api-e2e-pgsql-singletenant.yml | 1 - .../V2/gh-action-setup/ods_inspect.sh | 27 ----- .../Settings/V2/gateway/default.conf.template | 10 -- .../V2/gateway/default_idp.conf.template | 9 -- .../compose-build-ods-multi-tenant.yml | 100 ------------------ .../mssql/SingleTenant/compose-build-ods.yml | 63 ----------- .../compose-build-ods-multi-tenant.yml | 82 -------------- .../pgsql/SingleTenant/compose-build-ods.yml | 62 ----------- 11 files changed, 357 deletions(-) delete mode 100644 Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh delete mode 100644 Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml delete mode 100644 Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml delete mode 100644 Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml delete mode 100644 Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml diff --git a/.github/workflows/api-e2e-mssql-multitenant.yml b/.github/workflows/api-e2e-mssql-multitenant.yml index 0e2b348c2..791fb466c 100644 --- a/.github/workflows/api-e2e-mssql-multitenant.yml +++ b/.github/workflows/api-e2e-mssql-multitenant.yml @@ -56,7 +56,6 @@ jobs: run: | docker compose \ -f '../../Docker/V2/Compose/mssql/MultiTenant/compose-build-dev-multi-tenant.yml' \ - -f '../../Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml' \ --env-file './E2E Tests/V2/gh-action-setup/.automation_mssql.env' \ up -d diff --git a/.github/workflows/api-e2e-mssql-singletenant.yml b/.github/workflows/api-e2e-mssql-singletenant.yml index 944d9f9f7..6398af6dd 100644 --- a/.github/workflows/api-e2e-mssql-singletenant.yml +++ b/.github/workflows/api-e2e-mssql-singletenant.yml @@ -56,7 +56,6 @@ jobs: run: | docker compose \ -f '../../Docker/V2/Compose/mssql/SingleTenant/compose-build-dev.yml' \ - -f '../../Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml' \ --env-file './E2E Tests/V2/gh-action-setup/.automation_mssql.env' \ up -d diff --git a/.github/workflows/api-e2e-pgsql-multitenant.yml b/.github/workflows/api-e2e-pgsql-multitenant.yml index fa448db1c..f90d7676a 100644 --- a/.github/workflows/api-e2e-pgsql-multitenant.yml +++ b/.github/workflows/api-e2e-pgsql-multitenant.yml @@ -56,7 +56,6 @@ jobs: run: | docker compose \ -f '../../Docker/V2/Compose/pgsql/MultiTenant/compose-build-dev-multi-tenant.yml' \ - -f '../../Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml' \ --env-file './E2E Tests/V2/gh-action-setup/.automation_pgsql.env' \ up -d diff --git a/.github/workflows/api-e2e-pgsql-singletenant.yml b/.github/workflows/api-e2e-pgsql-singletenant.yml index 043f001b2..3632dc752 100644 --- a/.github/workflows/api-e2e-pgsql-singletenant.yml +++ b/.github/workflows/api-e2e-pgsql-singletenant.yml @@ -52,7 +52,6 @@ jobs: run: | docker compose \ -f '../../Docker/V2/Compose/pgsql/SingleTenant/compose-build-dev.yml' \ - -f '../../Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml' \ --env-file './E2E Tests/V2/gh-action-setup/.automation_pgsql.env' \ up -d diff --git a/Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh b/Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh deleted file mode 100644 index b1c070ded..000000000 --- a/Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/bash -end=$((SECONDS+ 5 * 60)) - -echo $1 - -until [[ "`docker inspect -f {{.State.Health.Status}} $1`" == "healthy" || $SECONDS -gt $end ]]; do - sleep 2; -done; - -if [ "`docker inspect -f {{.State.Health.Status}} $1`" == "healthy" ] -then - echo "--- Container is healthy ---" -else - docker ps - docker logs ed-fi-ods-api --tail 50 - echo "--- Operation timed out. Review container status ---" - exit 1 -fi - -status=`curl -s -o /dev/null -w "%{http_code}" -k https://localhost/api/health` -if [[ $status -eq "200" ]] -then - echo "--- Ods API application is running ---" -else - echo "--- Ods API application is failing with status code ${status}" - exit 2 -fi diff --git a/Docker/Settings/V2/gateway/default.conf.template b/Docker/Settings/V2/gateway/default.conf.template index 9acaf2336..9189bfa51 100644 --- a/Docker/Settings/V2/gateway/default.conf.template +++ b/Docker/Settings/V2/gateway/default.conf.template @@ -27,14 +27,4 @@ server { proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - - location /${ODS_VIRTUAL_NAME} { - client_max_body_size 20M; - proxy_pass http://ed-fi-ods-api/api; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header X-Forwarded-Host $host; - proxy_set_header X-Forwarded-Port 443; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } diff --git a/Docker/Settings/V2/gateway/default_idp.conf.template b/Docker/Settings/V2/gateway/default_idp.conf.template index 335fcc83d..69189bbd5 100644 --- a/Docker/Settings/V2/gateway/default_idp.conf.template +++ b/Docker/Settings/V2/gateway/default_idp.conf.template @@ -28,15 +28,6 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - location /${ODS_VIRTUAL_NAME} { - client_max_body_size 20M; - proxy_pass http://ed-fi-ods-api/api; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header X-Forwarded-Host $host; - proxy_set_header X-Forwarded-Port 443; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - location /auth { proxy_pass http://ed-fi-idp-keycloak:8080/auth; proxy_http_version 1.1; diff --git a/Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml b/Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml deleted file mode 100644 index 05cd1b9d7..000000000 --- a/Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml +++ /dev/null @@ -1,100 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Licensed to the Ed-Fi Alliance under one or more agreements. -# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -# See the LICENSE and NOTICES files in the project root for more information. - -services: - db-ods-tenant1: - build: - context: ../../../../Settings/V2/DB-Ods/mssql/ - dockerfile: Dockerfile - args: - ODS_VERSION: ${MSSQL_ODS_MINIMAL_VERSION:-7.3.478} - TPDM_VERSION: ${MSSQL_TPDM_MINIMAL_VERSION:-7.3.326} - STANDARD_VERSION: ${STANDARD_VERSION:-5.2.0} - EXTENSION_VERSION: ${EXTENSION_VERSION:-1.1.0} - environment: - ACCEPT_EULA: "Y" - SQLSERVER_USER: ${SQLSERVER_USER:-edfi} - SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} - TPDM_ENABLED: ${TPDM_ENABLED:-true} - MSSQL_PID: ${MSSQL_PID:-Express} - volumes: - - vol-db-ods-tenant1:/var/opt/mssql/data - - vol-db-ods-tenant1:/var/opt/mssql/log - restart: always - container_name: ed-fi-db-ods-tenant1 - hostname: ed-fi-db-ods-tenant1 - healthcheck: - test: /opt/mssql-tools18/bin/sqlcmd -U ${SQLSERVER_USER:-edfi} -P "${SQLSERVER_PASSWORD:-P@55w0rd}" -C -Q "SELECT 1" - start_period: "60s" - retries: 3 - - db-ods-tenant2: - build: - context: ../../../../Settings/V2/DB-Ods/mssql/ - dockerfile: Dockerfile - args: - ODS_VERSION: ${MSSQL_ODS_MINIMAL_VERSION:-7.3.478} - TPDM_VERSION: ${MSSQL_TPDM_MINIMAL_VERSION:-7.3.326} - STANDARD_VERSION: ${STANDARD_VERSION:-5.2.0} - EXTENSION_VERSION: ${EXTENSION_VERSION:-1.1.0} - environment: - ACCEPT_EULA: "Y" - SQLSERVER_USER: ${SQLSERVER_USER:-edfi} - SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} - TPDM_ENABLED: ${TPDM_ENABLED:-true} - MSSQL_PID: ${MSSQL_PID:-Express} - volumes: - - vol-db-ods-tenant2:/var/opt/mssql/data - - vol-db-ods-tenant2:/var/opt/mssql/log - restart: always - container_name: ed-fi-db-ods-tenant2 - hostname: ed-fi-db-ods-tenant2 - healthcheck: - test: /opt/mssql-tools18/bin/sqlcmd -U ${SQLSERVER_USER:-edfi} -P "${SQLSERVER_PASSWORD:-P@55w0rd}" -C -Q "SELECT 1" - start_period: "60s" - retries: 3 - - api: - image: edfialliance/ods-api-web-api:${TAG}-mssql - environment: - API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} - ApiSettings__Features:11:IsEnabled: true - ASPNETCORE_ENVIRONMENT: "docker" - ENCRYPT_CONNECTION: "${ENCRYPT_CONNECTION:-false}" - ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" - ODS_WAIT_HOSTS: "db-admin-tenant1 db-admin-tenant2" - PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" - SQLSERVER_ADMIN_DATASOURCE: "${SQLSERVER_ADMIN_DATASOURCE:-host.docker.internal}" - SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} - SQLSERVER_TENANT1_PORT: 1433 - SQLSERVER_TENANT2_PORT: 1433 - SQLSERVER_USER: ${SQLSERVER_USER:-edfi} - TPDM_ENABLED: "${TPDM_ENABLED:-true}" - Tenants__tenant1__ConnectionStrings__EdFi_Admin: "Data Source=db-admin-tenant1,1433;Initial Catalog=EdFi_Admin;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" - Tenants__tenant1__ConnectionStrings__EdFi_Security: "Data Source=db-admin-tenant1,1433;Initial Catalog=EdFi_Security;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" - Tenants__tenant2__ConnectionStrings__EdFi_Admin: "Data Source=db-admin-tenant2,1433;Initial Catalog=EdFi_Admin;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" - Tenants__tenant2__ConnectionStrings__EdFi_Security: "Data Source=db-admin-tenant2,1433;Initial Catalog=EdFi_Security;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" - volumes: - - ${LOGS_FOLDER}:/app/logs - depends_on: - - db-ods-tenant1 - - db-ods-tenant2 - - db-admin-tenant1 - - db-admin-tenant2 - restart: always - hostname: api - container_name: ed-fi-ods-api - healthcheck: - test: $$API_HEALTHCHECK_TEST - start_period: "60s" - retries: 3 - -volumes: - vol-db-ods-tenant1: - driver: local - name: vol-nuget-db-ods-tenant1-local - vol-db-ods-tenant2: - driver: local - name: vol-nuget-db-ods-tenant2-local diff --git a/Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml b/Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml deleted file mode 100644 index c96080df3..000000000 --- a/Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml +++ /dev/null @@ -1,63 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Licensed to the Ed-Fi Alliance under one or more agreements. -# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -# See the LICENSE and NOTICES files in the project root for more information. - -services: - db-ods: - build: - context: ../../../../Settings/V2/DB-Ods/mssql/ - dockerfile: Dockerfile - args: - ODS_VERSION: ${MSSQL_ODS_MINIMAL_VERSION:-7.3.478} - TPDM_VERSION: ${MSSQL_TPDM_MINIMAL_VERSION:-7.3.326} - STANDARD_VERSION: ${STANDARD_VERSION:-5.2.0} - EXTENSION_VERSION: ${EXTENSION_VERSION:-1.1.0} - environment: - ACCEPT_EULA: "Y" - SQLSERVER_USER: ${SQLSERVER_USER:-edfi} - SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} - TPDM_ENABLED: ${TPDM_ENABLED:-true} - MSSQL_PID: ${MSSQL_PID:-Express} - volumes: - - vol-db-ods:/var/opt/mssql/data - - vol-db-ods:/var/opt/mssql/log - restart: always - container_name: ed-fi-db-ods - hostname: ed-fi-db-ods - healthcheck: - test: /opt/mssql-tools18/bin/sqlcmd -U ${SQLSERVER_USER:-edfi} -P "${SQLSERVER_PASSWORD:-P@55w0rd}" -C -Q "SELECT 1" - start_period: "60s" - retries: 3 - - api: - image: edfialliance/ods-api-web-api:${TAG}-mssql - environment: - API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} - ConnectionStrings__EdFi_Admin: "Data Source=db-admin,1433;Initial Catalog=EdFi_Admin;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" - ConnectionStrings__EdFi_Security: "Data Source=db-admin,1433;Initial Catalog=EdFi_Security;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" - ENCRYPT_CONNECTION: "${ENCRYPT_CONNECTION:-false}" - ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" - PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" - SQLSERVER_ADMIN_DATASOURCE: "${SQLSERVER_ADMIN_DATASOURCE:-db-admin}" - SQLSERVER_ODS_DATASOURCE: "${SQLSERVER_ODS_DATASOURCE:-ed-fi-db-ods}" - SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} - SQLSERVER_USER: ${SQLSERVER_USER:-edfi} - TPDM_ENABLED: "${TPDM_ENABLED:-true}" - volumes: - - ${LOGS_FOLDER}:/app/logs - depends_on: - - db-ods - - db-admin - restart: always - hostname: api - container_name: ed-fi-ods-api - healthcheck: - test: $$API_HEALTHCHECK_TEST - start_period: "60s" - retries: 3 - -volumes: - vol-db-ods: - driver: local - name: vol-nuget-db-ods-local diff --git a/Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml b/Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml deleted file mode 100644 index 736edb97b..000000000 --- a/Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml +++ /dev/null @@ -1,82 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Licensed to the Ed-Fi Alliance under one or more agreements. -# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -# See the LICENSE and NOTICES files in the project root for more information. - -services: - db-ods-tenant1: - image: edfialliance/ods-api-db-ods-minimal:${TAG} - environment: - POSTGRES_USER: "${POSTGRES_USER}" - POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" - TPDM_ENABLED: "${TPDM_ENABLED:-true}" - volumes: - - vol-db-ods-tenant1:/var/lib/postgresql/data - restart: always - container_name: ed-fi-db-ods-tenant1 - healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] - start_period: "60s" - retries: 3 - - db-ods-tenant2: - image: edfialliance/ods-api-db-ods-minimal:${TAG} - environment: - POSTGRES_USER: "${POSTGRES_USER}" - POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" - TPDM_ENABLED: "${TPDM_ENABLED:-true}" - volumes: - - vol-db-ods-tenant2:/var/lib/postgresql/data - restart: always - container_name: ed-fi-db-ods-tenant2 - healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] - start_period: "60s" - retries: 3 - - api: - image: edfialliance/ods-api-web-api:${TAG} - environment: - ADMIN_POSTGRES_HOST: db-admin-tenant1 - API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} - ApiSettings__Features:11:IsEnabled: true - ASPNETCORE_ENVIRONMENT: "docker" - ENCRYPT_CONNECTION: "${ENCRYPT_CONNECTION:-false}" - NPG_API_MAX_POOL_SIZE_ADMIN: "${NPG_API_MAX_POOL_SIZE_ADMIN}" - NPG_API_MAX_POOL_SIZE_MASTER: "${NPG_API_MAX_POOL_SIZE_MASTER}" - NPG_API_MAX_POOL_SIZE_ODS: "${NPG_API_MAX_POOL_SIZE_ODS}" - NPG_API_MAX_POOL_SIZE_SECURITY: "${NPG_API_MAX_POOL_SIZE_SECURITY}" - NPG_POOLING_ENABLED: "${NPG_POOLING_ENABLED:-false}" - ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" - ODS_WAIT_POSTGRES_HOSTS: "db-ods-tenant1 db-ods-tenant2 " - PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" - POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" - POSTGRES_PORT: "${POSTGRES_PORT:-5432}" - POSTGRES_USER: "${POSTGRES_USER}" - TPDM_ENABLED: "${TPDM_ENABLED:-true}" - Tenants__tenant1__ConnectionStrings__EdFi_Admin: "host=db-admin-tenant1;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Admin;pooling=true" - Tenants__tenant1__ConnectionStrings__EdFi_Security: "host=db-admin-tenant1;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Security;pooling=true" - Tenants__tenant2__ConnectionStrings__EdFi_Admin: "host=db-admin-tenant2;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Admin;pooling=true" - Tenants__tenant2__ConnectionStrings__EdFi_Security: "host=db-admin-tenant2;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Security;pooling=true" - volumes: - - ${LOGS_FOLDER}:/app/logs - depends_on: - - db-ods-tenant1 - - db-ods-tenant2 - - db-admin-tenant1 - - db-admin-tenant2 - restart: always - hostname: api - container_name: ed-fi-ods-api - healthcheck: - test: $$API_HEALTHCHECK_TEST - start_period: "60s" - retries: 3 - -volumes: - vol-db-ods-tenant1: - driver: local - name: vol-db-ods-tenant1 - vol-db-ods-tenant2: - driver: local - name: vol-db-ods-tenant2 diff --git a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml deleted file mode 100644 index 79f25f09a..000000000 --- a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml +++ /dev/null @@ -1,62 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Licensed to the Ed-Fi Alliance under one or more agreements. -# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -# See the LICENSE and NOTICES files in the project root for more information. - -services: - db-ods: - image: edfialliance/ods-api-db-ods-minimal:${TAG} - environment: - POSTGRES_USER: "${POSTGRES_USER}" - POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" - TPDM_ENABLED: "${TPDM_ENABLED:-true}" - volumes: - - vol-db-ods:/var/lib/postgresql/data - restart: always - container_name: ed-fi-db-ods - healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] - start_period: "60s" - retries: 3 - - api: - image: edfialliance/ods-api-web-api:${TAG} - environment: - ADMIN_POSTGRES_HOST: db-admin - API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} - ConnectionStrings__EdFi_Admin: "host=db-admin;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Admin;pooling=true" - ConnectionStrings__EdFi_Security: "host=db-admin;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Security;pooling=true" - NPG_API_MAX_POOL_SIZE_ADMIN: "${NPG_API_MAX_POOL_SIZE_ADMIN}" - NPG_API_MAX_POOL_SIZE_MASTER: "${NPG_API_MAX_POOL_SIZE_MASTER}" - NPG_API_MAX_POOL_SIZE_ODS: "${NPG_API_MAX_POOL_SIZE_ODS}" - NPG_API_MAX_POOL_SIZE_SECURITY: "${NPG_API_MAX_POOL_SIZE_SECURITY}" - NPG_POOLING_ENABLED: "${NPG_POOLING_ENABLED:-false}" - ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" - ODS_WAIT_POSTGRES_HOSTS: "db-ods " - ODS_POSTGRES_HOST: db-ods - PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" - POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" - POSTGRES_PORT: "${POSTGRES_PORT:-5432}" - POSTGRES_USER: "${POSTGRES_USER}" - TPDM_ENABLED: "${TPDM_ENABLED:-true}" - volumes: - - ${LOGS_FOLDER}:/app/logs - depends_on: - - db-ods - - db-admin - restart: always - hostname: api - container_name: ed-fi-ods-api - healthcheck: - test: $$API_HEALTHCHECK_TEST - start_period: "60s" - retries: 3 - -volumes: - vol-db-admin: - driver: local - name: vol-db-admin - vol-db-ods: - driver: local - name: vol-db-ods - From 9bc747f342aa400d3582f6e1c68afa694e8e2af3 Mon Sep 17 00:00:00 2001 From: David Jimenez Date: Mon, 24 Nov 2025 14:21:21 -0600 Subject: [PATCH 6/6] Restoring back some dockerfile --- .../V2/gh-action-setup/ods_inspect.sh | 27 +++++ .../compose-build-ods-multi-tenant.yml | 100 ++++++++++++++++++ .../mssql/SingleTenant/compose-build-ods.yml | 63 +++++++++++ .../compose-build-ods-multi-tenant.yml | 82 ++++++++++++++ .../pgsql/SingleTenant/compose-build-ods.yml | 61 +++++++++++ 5 files changed, 333 insertions(+) create mode 100644 Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh create mode 100644 Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml create mode 100644 Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml create mode 100644 Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml create mode 100644 Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml diff --git a/Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh b/Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh new file mode 100644 index 000000000..91b580605 --- /dev/null +++ b/Application/EdFi.Ods.AdminApi/E2E Tests/V2/gh-action-setup/ods_inspect.sh @@ -0,0 +1,27 @@ +#! /bin/bash +end=$((SECONDS+ 5 * 60)) + +echo $1 + +until [[ "`docker inspect -f {{.State.Health.Status}} $1`" == "healthy" || $SECONDS -gt $end ]]; do + sleep 2; +done; + +if [ "`docker inspect -f {{.State.Health.Status}} $1`" == "healthy" ] +then + echo "--- Container is healthy ---" +else + docker ps + docker logs ed-fi-ods-api --tail 50 + echo "--- Operation timed out. Review container status ---" + exit 1 +fi + +status=`curl -s -o /dev/null -w "%{http_code}" -k https://localhost/api/health` +if [[ $status -eq "200" ]] +then + echo "--- Ods API application is running ---" +else + echo "--- Ods API application is failing with status code ${status}" + exit 2 +fi \ No newline at end of file diff --git a/Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml b/Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml new file mode 100644 index 000000000..3aaccf9fa --- /dev/null +++ b/Docker/V2/Compose/mssql/MultiTenant/compose-build-ods-multi-tenant.yml @@ -0,0 +1,100 @@ +# SPDX-License-Identifier: Apache-2.0 +# Licensed to the Ed-Fi Alliance under one or more agreements. +# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +# See the LICENSE and NOTICES files in the project root for more information. + +services: + db-ods-tenant1: + build: + context: ../../../../Settings/V2/DB-Ods/mssql/ + dockerfile: Dockerfile + args: + ODS_VERSION: ${MSSQL_ODS_MINIMAL_VERSION:-7.3.478} + TPDM_VERSION: ${MSSQL_TPDM_MINIMAL_VERSION:-7.3.326} + STANDARD_VERSION: ${STANDARD_VERSION:-5.2.0} + EXTENSION_VERSION: ${EXTENSION_VERSION:-1.1.0} + environment: + ACCEPT_EULA: "Y" + SQLSERVER_USER: ${SQLSERVER_USER:-edfi} + SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} + TPDM_ENABLED: ${TPDM_ENABLED:-true} + MSSQL_PID: ${MSSQL_PID:-Express} + volumes: + - vol-db-ods-tenant1:/var/opt/mssql/data + - vol-db-ods-tenant1:/var/opt/mssql/log + restart: always + container_name: ed-fi-db-ods-tenant1 + hostname: ed-fi-db-ods-tenant1 + healthcheck: + test: /opt/mssql-tools18/bin/sqlcmd -U ${SQLSERVER_USER:-edfi} -P "${SQLSERVER_PASSWORD:-P@55w0rd}" -C -Q "SELECT 1" + start_period: "60s" + retries: 3 + + db-ods-tenant2: + build: + context: ../../../../Settings/V2/DB-Ods/mssql/ + dockerfile: Dockerfile + args: + ODS_VERSION: ${MSSQL_ODS_MINIMAL_VERSION:-7.3.478} + TPDM_VERSION: ${MSSQL_TPDM_MINIMAL_VERSION:-7.3.326} + STANDARD_VERSION: ${STANDARD_VERSION:-5.2.0} + EXTENSION_VERSION: ${EXTENSION_VERSION:-1.1.0} + environment: + ACCEPT_EULA: "Y" + SQLSERVER_USER: ${SQLSERVER_USER:-edfi} + SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} + TPDM_ENABLED: ${TPDM_ENABLED:-true} + MSSQL_PID: ${MSSQL_PID:-Express} + volumes: + - vol-db-ods-tenant2:/var/opt/mssql/data + - vol-db-ods-tenant2:/var/opt/mssql/log + restart: always + container_name: ed-fi-db-ods-tenant2 + hostname: ed-fi-db-ods-tenant2 + healthcheck: + test: /opt/mssql-tools18/bin/sqlcmd -U ${SQLSERVER_USER:-edfi} -P "${SQLSERVER_PASSWORD:-P@55w0rd}" -C -Q "SELECT 1" + start_period: "60s" + retries: 3 + + api: + image: edfialliance/ods-api-web-api:${TAG}-mssql + environment: + API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} + ApiSettings__Features:11:IsEnabled: true + ASPNETCORE_ENVIRONMENT: "docker" + ENCRYPT_CONNECTION: "${ENCRYPT_CONNECTION:-false}" + ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" + ODS_WAIT_HOSTS: "db-admin-tenant1 db-admin-tenant2" + PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" + SQLSERVER_ADMIN_DATASOURCE: "${SQLSERVER_ADMIN_DATASOURCE:-host.docker.internal}" + SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} + SQLSERVER_TENANT1_PORT: 1433 + SQLSERVER_TENANT2_PORT: 1433 + SQLSERVER_USER: ${SQLSERVER_USER:-edfi} + TPDM_ENABLED: "${TPDM_ENABLED:-true}" + Tenants__tenant1__ConnectionStrings__EdFi_Admin: "Data Source=db-admin-tenant1,1433;Initial Catalog=EdFi_Admin;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" + Tenants__tenant1__ConnectionStrings__EdFi_Security: "Data Source=db-admin-tenant1,1433;Initial Catalog=EdFi_Security;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" + Tenants__tenant2__ConnectionStrings__EdFi_Admin: "Data Source=db-admin-tenant2,1433;Initial Catalog=EdFi_Admin;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" + Tenants__tenant2__ConnectionStrings__EdFi_Security: "Data Source=db-admin-tenant2,1433;Initial Catalog=EdFi_Security;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" + volumes: + - ${LOGS_FOLDER}:/app/logs + depends_on: + - db-ods-tenant1 + - db-ods-tenant2 + - db-admin-tenant1 + - db-admin-tenant2 + restart: always + hostname: api + container_name: ed-fi-ods-api + healthcheck: + test: $$API_HEALTHCHECK_TEST + start_period: "60s" + retries: 3 + +volumes: + vol-db-ods-tenant1: + driver: local + name: vol-nuget-db-ods-tenant1-local + vol-db-ods-tenant2: + driver: local + name: vol-nuget-db-ods-tenant2-local \ No newline at end of file diff --git a/Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml b/Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml new file mode 100644 index 000000000..a77ac80e6 --- /dev/null +++ b/Docker/V2/Compose/mssql/SingleTenant/compose-build-ods.yml @@ -0,0 +1,63 @@ +# SPDX-License-Identifier: Apache-2.0 +# Licensed to the Ed-Fi Alliance under one or more agreements. +# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +# See the LICENSE and NOTICES files in the project root for more information. + +services: + db-ods: + build: + context: ../../../../Settings/V2/DB-Ods/mssql/ + dockerfile: Dockerfile + args: + ODS_VERSION: ${MSSQL_ODS_MINIMAL_VERSION:-7.3.478} + TPDM_VERSION: ${MSSQL_TPDM_MINIMAL_VERSION:-7.3.326} + STANDARD_VERSION: ${STANDARD_VERSION:-5.2.0} + EXTENSION_VERSION: ${EXTENSION_VERSION:-1.1.0} + environment: + ACCEPT_EULA: "Y" + SQLSERVER_USER: ${SQLSERVER_USER:-edfi} + SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} + TPDM_ENABLED: ${TPDM_ENABLED:-true} + MSSQL_PID: ${MSSQL_PID:-Express} + volumes: + - vol-db-ods:/var/opt/mssql/data + - vol-db-ods:/var/opt/mssql/log + restart: always + container_name: ed-fi-db-ods + hostname: ed-fi-db-ods + healthcheck: + test: /opt/mssql-tools18/bin/sqlcmd -U ${SQLSERVER_USER:-edfi} -P "${SQLSERVER_PASSWORD:-P@55w0rd}" -C -Q "SELECT 1" + start_period: "60s" + retries: 3 + + api: + image: edfialliance/ods-api-web-api:${TAG}-mssql + environment: + API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} + ConnectionStrings__EdFi_Admin: "Data Source=db-admin,1433;Initial Catalog=EdFi_Admin;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" + ConnectionStrings__EdFi_Security: "Data Source=db-admin,1433;Initial Catalog=EdFi_Security;User Id=${SQLSERVER_USER};Password=${SQLSERVER_PASSWORD}; Integrated Security=False;Encrypt=false;TrustServerCertificate=true" + ENCRYPT_CONNECTION: "${ENCRYPT_CONNECTION:-false}" + ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" + PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" + SQLSERVER_ADMIN_DATASOURCE: "${SQLSERVER_ADMIN_DATASOURCE:-db-admin}" + SQLSERVER_ODS_DATASOURCE: "${SQLSERVER_ODS_DATASOURCE:-ed-fi-db-ods}" + SQLSERVER_PASSWORD: ${SQLSERVER_PASSWORD:-P@55w0rd} + SQLSERVER_USER: ${SQLSERVER_USER:-edfi} + TPDM_ENABLED: "${TPDM_ENABLED:-true}" + volumes: + - ${LOGS_FOLDER}:/app/logs + depends_on: + - db-ods + - db-admin + restart: always + hostname: api + container_name: ed-fi-ods-api + healthcheck: + test: $$API_HEALTHCHECK_TEST + start_period: "60s" + retries: 3 + +volumes: + vol-db-ods: + driver: local + name: vol-nuget-db-ods-local \ No newline at end of file diff --git a/Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml b/Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml new file mode 100644 index 000000000..e2e6846f4 --- /dev/null +++ b/Docker/V2/Compose/pgsql/MultiTenant/compose-build-ods-multi-tenant.yml @@ -0,0 +1,82 @@ +# SPDX-License-Identifier: Apache-2.0 +# Licensed to the Ed-Fi Alliance under one or more agreements. +# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +# See the LICENSE and NOTICES files in the project root for more information. + +services: + db-ods-tenant1: + image: edfialliance/ods-api-db-ods-minimal:${TAG} + environment: + POSTGRES_USER: "${POSTGRES_USER}" + POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" + TPDM_ENABLED: "${TPDM_ENABLED:-true}" + volumes: + - vol-db-ods-tenant1:/var/lib/postgresql/data + restart: always + container_name: ed-fi-db-ods-tenant1 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] + start_period: "60s" + retries: 3 + + db-ods-tenant2: + image: edfialliance/ods-api-db-ods-minimal:${TAG} + environment: + POSTGRES_USER: "${POSTGRES_USER}" + POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" + TPDM_ENABLED: "${TPDM_ENABLED:-true}" + volumes: + - vol-db-ods-tenant2:/var/lib/postgresql/data + restart: always + container_name: ed-fi-db-ods-tenant2 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] + start_period: "60s" + retries: 3 + + api: + image: edfialliance/ods-api-web-api:${TAG} + environment: + ADMIN_POSTGRES_HOST: db-admin-tenant1 + API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} + ApiSettings__Features:11:IsEnabled: true + ASPNETCORE_ENVIRONMENT: "docker" + ENCRYPT_CONNECTION: "${ENCRYPT_CONNECTION:-false}" + NPG_API_MAX_POOL_SIZE_ADMIN: "${NPG_API_MAX_POOL_SIZE_ADMIN}" + NPG_API_MAX_POOL_SIZE_MASTER: "${NPG_API_MAX_POOL_SIZE_MASTER}" + NPG_API_MAX_POOL_SIZE_ODS: "${NPG_API_MAX_POOL_SIZE_ODS}" + NPG_API_MAX_POOL_SIZE_SECURITY: "${NPG_API_MAX_POOL_SIZE_SECURITY}" + NPG_POOLING_ENABLED: "${NPG_POOLING_ENABLED:-false}" + ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" + ODS_WAIT_POSTGRES_HOSTS: "db-ods-tenant1 db-ods-tenant2 " + PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" + POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" + POSTGRES_PORT: "${POSTGRES_PORT:-5432}" + POSTGRES_USER: "${POSTGRES_USER}" + TPDM_ENABLED: "${TPDM_ENABLED:-true}" + Tenants__tenant1__ConnectionStrings__EdFi_Admin: "host=db-admin-tenant1;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Admin;pooling=true" + Tenants__tenant1__ConnectionStrings__EdFi_Security: "host=db-admin-tenant1;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Security;pooling=true" + Tenants__tenant2__ConnectionStrings__EdFi_Admin: "host=db-admin-tenant2;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Admin;pooling=true" + Tenants__tenant2__ConnectionStrings__EdFi_Security: "host=db-admin-tenant2;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Security;pooling=true" + volumes: + - ${LOGS_FOLDER}:/app/logs + depends_on: + - db-ods-tenant1 + - db-ods-tenant2 + - db-admin-tenant1 + - db-admin-tenant2 + restart: always + hostname: api + container_name: ed-fi-ods-api + healthcheck: + test: $$API_HEALTHCHECK_TEST + start_period: "60s" + retries: 3 + +volumes: + vol-db-ods-tenant1: + driver: local + name: vol-db-ods-tenant1 + vol-db-ods-tenant2: + driver: local + name: vol-db-ods-tenant2 \ No newline at end of file diff --git a/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml new file mode 100644 index 000000000..dadf858a1 --- /dev/null +++ b/Docker/V2/Compose/pgsql/SingleTenant/compose-build-ods.yml @@ -0,0 +1,61 @@ +# SPDX-License-Identifier: Apache-2.0 +# Licensed to the Ed-Fi Alliance under one or more agreements. +# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +# See the LICENSE and NOTICES files in the project root for more information. + +services: + db-ods: + image: edfialliance/ods-api-db-ods-minimal:${TAG} + environment: + POSTGRES_USER: "${POSTGRES_USER}" + POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" + TPDM_ENABLED: "${TPDM_ENABLED:-true}" + volumes: + - vol-db-ods:/var/lib/postgresql/data + restart: always + container_name: ed-fi-db-ods + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] + start_period: "60s" + retries: 3 + + api: + image: edfialliance/ods-api-web-api:${TAG} + environment: + ADMIN_POSTGRES_HOST: db-admin + API_HEALTHCHECK_TEST: ${API_HEALTHCHECK_TEST?Please consult env.example to set the API healthcheck test} + ConnectionStrings__EdFi_Admin: "host=db-admin;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Admin;pooling=true" + ConnectionStrings__EdFi_Security: "host=db-admin;port=${POSTGRES_PORT};username=${POSTGRES_USER};password=${POSTGRES_PASSWORD};database=EdFi_Security;pooling=true" + NPG_API_MAX_POOL_SIZE_ADMIN: "${NPG_API_MAX_POOL_SIZE_ADMIN}" + NPG_API_MAX_POOL_SIZE_MASTER: "${NPG_API_MAX_POOL_SIZE_MASTER}" + NPG_API_MAX_POOL_SIZE_ODS: "${NPG_API_MAX_POOL_SIZE_ODS}" + NPG_API_MAX_POOL_SIZE_SECURITY: "${NPG_API_MAX_POOL_SIZE_SECURITY}" + NPG_POOLING_ENABLED: "${NPG_POOLING_ENABLED:-false}" + ODS_CONNECTION_STRING_ENCRYPTION_KEY: "${ODS_CONNECTION_STRING_ENCRYPTION_KEY}" + ODS_WAIT_POSTGRES_HOSTS: "db-ods " + ODS_POSTGRES_HOST: db-ods + PATH_BASE: "${ODS_VIRTUAL_NAME:-api}" + POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" + POSTGRES_PORT: "${POSTGRES_PORT:-5432}" + POSTGRES_USER: "${POSTGRES_USER}" + TPDM_ENABLED: "${TPDM_ENABLED:-true}" + volumes: + - ${LOGS_FOLDER}:/app/logs + depends_on: + - db-ods + - db-admin + restart: always + hostname: api + container_name: ed-fi-ods-api + healthcheck: + test: $$API_HEALTHCHECK_TEST + start_period: "60s" + retries: 3 + +volumes: + vol-db-admin: + driver: local + name: vol-db-admin + vol-db-ods: + driver: local + name: vol-db-ods