diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cded1de5..fcaccffb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @teutonet/oci-images +* @teutonet/developer diff --git a/.github/release-please/config.json b/.github/release-please/config.json index 82d0ed66..2577c8d6 100644 --- a/.github/release-please/config.json +++ b/.github/release-please/config.json @@ -26,6 +26,24 @@ }, "images/solr-ckan": { "package-name": "solr-ckan" + }, + "images/spilo": { + "package-name": "spilo" + }, + "images/qgis-server": { + "package-name": "qgis-server" + }, + "images/masterportal-v2": { + "package-name": "masterportal-v2" + }, + "images/masterportal-v3": { + "package-name": "masterportal-v3" + }, + "images/teuto-course": { + "package-name": "teuto-course" + }, + "images/cnpg": { + "package-name": "cnpg" } } -} \ No newline at end of file +} diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 9e9fa0e4..186bf353 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1 +1,11 @@ -{"images/ckan":"0.1.0","images/ckan-dcatapde":"0.1.0","images/solr-ckan":"0.1.0"} +{ + "images/ckan": "1.0.16", + "images/ckan-dcatapde": "1.0.15", + "images/solr-ckan": "1.0.29", + "images/spilo": "16.0.1", + "images/qgis-server": "3.22.21", + "images/masterportal-v2": "2.51.3", + "images/masterportal-v3": "3.4.19", + "images/teuto-course": "2.49.1", + "images/cnpg": "16.1.0" +} \ No newline at end of file diff --git a/.github/release-please/platform.json b/.github/release-please/platform.json new file mode 100644 index 00000000..0ea84b3d --- /dev/null +++ b/.github/release-please/platform.json @@ -0,0 +1 @@ +{"images/ckan":"linux/amd64","images/ckan-dcatapde":"linux/amd64","images/solr-ckan":"linux/amd64,linux/arm64","images/spilo":"linux/amd64","images/qgis-server":"linux/amd64,linux/arm64","images/masterportal-v2":"linux/amd64,linux/arm64","images/masterportal-v3":"linux/amd64,linux/arm64","images/teuto-course":"linux/amd64","images/cnpg":"linux/amd64"} diff --git a/.github/renovate.json b/.github/renovate.json index da7f6cc7..8274352f 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,8 +1,10 @@ { "extends": [ - "config:best-practices" + "config:best-practices", + "github>teutonet/renovate-config:regex-managers" ], "addLabels": ["dependencies"], + "rebaseWhen": "conflicted", "packageRules": [ { "matchUpdateTypes": ["minor", "patch", "pin", "digest"], diff --git a/.github/scripts/sync-codeowners.sh b/.github/scripts/sync-codeowners.sh index dec220b5..ecc7090c 100755 --- a/.github/scripts/sync-codeowners.sh +++ b/.github/scripts/sync-codeowners.sh @@ -3,4 +3,5 @@ [[ "$RUNNER_DEBUG" == 1 ]] && set -x [[ -o xtrace ]] && export RUNNER_DEBUG=1 -echo "* @teutonet/oci-images" \ No newline at end of file +echo "* @teutonet/developer" + diff --git a/.github/workflows/actionlint.yaml b/.github/workflows/actionlint.yaml index 7ea679bd..e33469db 100644 --- a/.github/workflows/actionlint.yaml +++ b/.github/workflows/actionlint.yaml @@ -10,10 +10,10 @@ jobs: runs-on: ubuntu-latest name: lint github workflows steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Add problem matchers run: | # https://github.com/rhysd/actionlint/blob/3a2f2c7/docs/usage.md#problem-matchers curl -LO https://raw.githubusercontent.com/rhysd/actionlint/main/.github/actionlint-matcher.json echo "::add-matcher::actionlint-matcher.json" - - uses: docker://rhysd/actionlint:latest \ No newline at end of file + - uses: docker://rhysd/actionlint:latest@sha256:b1934ee5f1c509618f2508e6eb47ee0d3520686341fec936f3b79331f9315667 \ No newline at end of file diff --git a/.github/workflows/auto-assign-pr.yaml b/.github/workflows/auto-assign-pr.yaml index 8b671f51..9da3d703 100644 --- a/.github/workflows/auto-assign-pr.yaml +++ b/.github/workflows/auto-assign-pr.yaml @@ -9,4 +9,4 @@ jobs: auto-assign: runs-on: ubuntu-latest steps: - - uses: kentaro-m/auto-assign-action@v2.0.0 \ No newline at end of file + - uses: kentaro-m/auto-assign-action@a6d59add3a817df08cafa9b166367768d2c337f8 # v2.0.1 \ No newline at end of file diff --git a/.github/workflows/conventional-commits.yaml b/.github/workflows/conventional-commits.yaml index 6fdaa7a4..0c4b69ce 100644 --- a/.github/workflows/conventional-commits.yaml +++ b/.github/workflows/conventional-commits.yaml @@ -8,9 +8,11 @@ jobs: runs-on: ubuntu-latest name: check conventional commit compliance steps: - - uses: actions/checkout@main + - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # main with: fetch-depth: 0 - name: Conventional commits check - uses: oknozor/cocogitto-action@v3 \ No newline at end of file + uses: oknozor/cocogitto-action@390bda87a19bf627e03ad075c67a11e9ddbb7547 # v4 + with: + command: check \ No newline at end of file diff --git a/.github/workflows/create-release-prs.yaml b/.github/workflows/create-release-prs.yaml index 5394957e..8c935fc3 100644 --- a/.github/workflows/create-release-prs.yaml +++ b/.github/workflows/create-release-prs.yaml @@ -12,14 +12,14 @@ jobs: createReleasePR: runs-on: ubuntu-latest steps: - - uses: googleapis/release-please-action@v4 + - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4 with: skip-github-release: true token: ${{ secrets.ACTIONS_BOT_TOKEN }} config-file: .github/release-please/config.json manifest-file: .github/release-please/manifest.json id: release-please - - uses: actions/checkout@v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 if: ${{ steps.release-please.outputs.prs_created == 'true' }} - name: Set PRs to auto-merge if: ${{ steps.release-please.outputs.prs_created == 'true' }} diff --git a/.github/workflows/release-image.yaml b/.github/workflows/release-image.yaml index 21676432..39d93f92 100644 --- a/.github/workflows/release-image.yaml +++ b/.github/workflows/release-image.yaml @@ -18,7 +18,7 @@ jobs: releases_created: ${{ steps.release.outputs.releases_created }} paths_released: ${{ steps.release.outputs.paths_released }} steps: - - uses: googleapis/release-please-action@v4 + - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4 id: release with: skip-github-pull-request: true @@ -31,20 +31,12 @@ jobs: if: ${{ needs.release_please.outputs.releases_created }} strategy: matrix: - platform: - - linux/amd64 - - linux/arm64 image: ${{ fromJson(needs.release_please.outputs.paths_released) }} - exclude: - - image: images/ckan - platform: linux/arm64 - - image: images/ckan-dcatapde - platform: linux/arm64 steps: - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Detect changes - uses: dorny/paths-filter@v3.0.2 + uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1 id: filter with: filters: | @@ -58,8 +50,11 @@ jobs: - name: Get image version id: get-image-version run: echo "version=$(jq -r '."${{ matrix.image }}"' < .github/release-please/manifest.json)" >> "$GITHUB_OUTPUT" + - name: Get image platform + id: get-image-platform + run: echo "platform=$(jq -r '."${{ matrix.image }}"' < .github/release-please/platform.json)" >> "$GITHUB_OUTPUT" - name: Docker Metadata - uses: docker/metadata-action@v5.5.1 + uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0 id: meta with: images: ${{ format('{0}/{1}/{2}', env.REGISTRY ,'teutonet/oci-images', steps.get-image-name.outputs.fragment ) }} @@ -71,21 +66,21 @@ jobs: type=semver,pattern={{version}},value=${{ steps.get-image-version.outputs.version }} type=sha,prefix= - name: Set up QEMU - uses: docker/setup-qemu-action@v3.0.0 + uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0 - name: Set up Docker BuildX - uses: docker/setup-buildx-action@v3.3.0 + uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4 with: registry: ${{ env.REGISTRY }} username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push id: push - uses: docker/build-push-action@v5.3.0 + uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 with: context: ${{ matrix.image }} - platforms: ${{ matrix.platform }} + platforms: ${{ steps.get-image-platform.outputs.platform }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} push: ${{ github.event_name != 'pull_request' }} diff --git a/.github/workflows/update-codeowners.yaml b/.github/workflows/update-codeowners.yaml index 30d3310b..82fd18ba 100644 --- a/.github/workflows/update-codeowners.yaml +++ b/.github/workflows/update-codeowners.yaml @@ -10,16 +10,16 @@ on: jobs: generateCodeowners: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: generate CODEOWNERS run: ./.github/scripts/sync-codeowners.sh > .github/CODEOWNERS - name: Create PR id: create-pr - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8 with: add-paths: | .github/CODEOWNERS diff --git a/README.md b/README.md index c04f32c1..54480178 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # teuto.net OCI Images -![Build](https://github.com/teutonet/oci-images/actions/workflows/build.yml/badge.svg) +![Build](https://github.com/teutonet/oci-images/actions/workflows/release-image.yaml/badge.svg) ## Overview @@ -8,13 +8,14 @@ teuto.net OCI images. ## Description -You can find published versions of these images on [Docker Hub](https://hub.docker.com/r/teutonet): +You can find published versions of these images on [GitHub](https://github.com/orgs/teutonet/packages?repo_name=oci-images): -| Image | Stars | Size | Pulls | -|---------------------------------------------------------------------------|-----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------| -| [teutonet/ckan](https://hub.docker.com/r/teutonet/ckan) | ![Docker Stars](https://img.shields.io/docker/stars/teutonet/ckan) | ![Docker Image Size (latest semver)](https://img.shields.io/docker/image-size/teutonet/ckan) | ![Docker Pulls](https://img.shields.io/docker/pulls/teutonet/ckan) | -| [teutonet/ckan-dcatapde](https://hub.docker.com/r/teutonet/ckan-dcatapde) | ![Docker Stars](https://img.shields.io/docker/stars/teutonet/ckan-dcatapde) | ![Docker Image Size (latest semver)](https://img.shields.io/docker/image-size/teutonet/ckan-dcatapde) | ![Docker Pulls](https://img.shields.io/docker/pulls/teutonet/ckan-dcatapde) | -| [teutonet/solr-ckan](https://hub.docker.com/r/teutonet/solr-ckan) | ![Docker Stars](https://img.shields.io/docker/stars/teutonet/solr-ckan) | ![Docker Image Size (latest semver)](https://img.shields.io/docker/image-size/teutonet/solr-ckan) | ![Docker Pulls](https://img.shields.io/docker/pulls/teutonet/solr-ckan) | +| Image |Pulls | +|---------------------------------------------------------------------------|-----------------------------------------------------------------------------| +| [teutonet/ckan](https://github.com/teutonet/oci-images/pkgs/container/oci-images%2Fckan) | ![Docker Pulls](https://img.shields.io/github/downloads/teutonet/oci-images/ckan?logo=github) | +| [teutonet/ckan-dcatapde](https://github.com/teutonet/oci-images/pkgs/container/oci-images%2Fckan-dcatapde) | ![Docker Pulls](https://img.shields.io/github/downloads/teutonet/oci-images/ckan-dcatapde?logo=github) | +| [teutonet/solr-ckan](https://github.com/teutonet/oci-images/pkgs/container/oci-images%2Fsolr-ckan) | ![Docker Pulls](https://img.shields.io/github/downloads/teutonet/oci-images/solr-ckan?logo=github) | +| [teutonet/spilo](https://github.com/teutonet/oci-images/pkgs/container/oci-images%2Fspilo ) | ![Docker Pulls](https://img.shields.io/github/downloads/teutonet/oci-images/spilo?logo=github) | ## Changelog & Releases diff --git a/images/ckan-dcatapde/CHANGELOG.md b/images/ckan-dcatapde/CHANGELOG.md new file mode 100644 index 00000000..bd4f1ef9 --- /dev/null +++ b/images/ckan-dcatapde/CHANGELOG.md @@ -0,0 +1,101 @@ +# Changelog + +## [1.0.15](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.14...ckan-dcatapde-v1.0.15) (2025-04-22) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.11.2 docker digest to c823a90 ([#254](https://github.com/teutonet/oci-images/issues/254)) ([4232cc1](https://github.com/teutonet/oci-images/commit/4232cc1ed94883902c5cc051772eb4d8fa237416)) + +## [1.0.14](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.13...ckan-dcatapde-v1.0.14) (2025-02-10) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base docker tag to v2.11.2 ([#209](https://github.com/teutonet/oci-images/issues/209)) ([4c02d2d](https://github.com/teutonet/oci-images/commit/4c02d2d3a25836e1d9f4af350f8a91f3b6198034)) + +## [1.0.13](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.12...ckan-dcatapde-v1.0.13) (2025-01-03) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base docker tag to v2.11.1 ([#179](https://github.com/teutonet/oci-images/issues/179)) ([a8c9515](https://github.com/teutonet/oci-images/commit/a8c951510882c3a3a2fc8f60b467bfe2e439aef8)) + +## [1.0.12](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.11...ckan-dcatapde-v1.0.12) (2024-12-04) + + +### Miscellaneous Chores + +* **ckan:** change methode to remove datapusher if api key is missing ([#175](https://github.com/teutonet/oci-images/issues/175)) ([d03967f](https://github.com/teutonet/oci-images/commit/d03967f1297be56bd750021140de2a40f3849a44)) + +## [1.0.11](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.10...ckan-dcatapde-v1.0.11) (2024-12-03) + + +### Miscellaneous Chores + +* **ckan:** auto deactivate datapusher if key is missing ([#172](https://github.com/teutonet/oci-images/issues/172)) ([a33fbae](https://github.com/teutonet/oci-images/commit/a33fbaef25e1dbaf4611400e5cf7468c4ea15d94)) +* **deps:** update ckan/ckan-base:2.11.0 docker digest to bae3f94 ([#164](https://github.com/teutonet/oci-images/issues/164)) ([a76b589](https://github.com/teutonet/oci-images/commit/a76b589c4d67d8a8f7fc693365080ac74f9a6d55)) + +## [1.0.10](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.9...ckan-dcatapde-v1.0.10) (2024-11-20) + + +### Miscellaneous Chores + +* **ckan:** update permissions and building ([#162](https://github.com/teutonet/oci-images/issues/162)) ([3dcd6af](https://github.com/teutonet/oci-images/commit/3dcd6af0396162018cdb648add2294026085ecb9)) + +## [1.0.9](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.5...ckan-dcatapde-v1.0.6) (2024-11-13) + + +### Miscellaneous Chores + +* **ckan:** update docker build to ckan 2.11 ([#137](https://github.com/teutonet/oci-images/issues/137)) ([5d86b97](https://github.com/teutonet/oci-images/commit/5d86b97363f84324fcd8314dc6a11758f82375d0)) +* **deps:** update ckan/ckan-base:2.11.0 docker digest to dc32715 ([#134](https://github.com/teutonet/oci-images/issues/134)) ([d9c7e26](https://github.com/teutonet/oci-images/commit/d9c7e2685ad0ff65a45ebe8675a035def747806d)) + +## [1.0.5](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.4...ckan-dcatapde-v2.48.0) (2024-10-09) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.11.0 docker digest to 25f6291 ([#88](https://github.com/teutonet/oci-images/issues/88)) ([be0f617](https://github.com/teutonet/oci-images/commit/be0f61712935e390dee66ba4ac59d82d59d05cc5)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) + +## [1.0.4](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.3...ckan-dcatapde-v1.0.4) (2024-08-29) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.11.0 docker digest to 0641aad ([#66](https://github.com/teutonet/oci-images/issues/66)) ([ceebf12](https://github.com/teutonet/oci-images/commit/ceebf12341f87b706da467e4d5a411ec4c39dec7)) + +## [1.0.3](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.2...ckan-dcatapde-v1.0.3) (2024-08-21) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base docker tag to v2.11.0 ([#62](https://github.com/teutonet/oci-images/issues/62)) ([a8c5091](https://github.com/teutonet/oci-images/commit/a8c50915856fb252b9c33384c4c01e2f3b77c9d6)) + +## [1.0.2](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.1...ckan-dcatapde-v1.0.2) (2024-07-03) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.10.4 docker digest to 636e0aa ([8f8e5ec](https://github.com/teutonet/oci-images/commit/8f8e5ec75b61c7cc97497743691c7401c5b6953f)) + +## [1.0.1](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v1.0.0...ckan-dcatapde-v1.0.1) (2024-06-27) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.10.4 docker digest to 83f67f4 ([2607189](https://github.com/teutonet/oci-images/commit/2607189d8350b1e481c24ce152133c5b29d257f7)) + +## [1.0.0](https://github.com/teutonet/oci-images/compare/ckan-dcatapde-v0.1.0...ckan-dcatapde-v1.0.0) (2024-05-29) + + +### Features + +* **ci:** initial repo setup ([8009c05](https://github.com/teutonet/oci-images/commit/8009c050a2ef05c2d1dd5c6406f6499064442b46)) + + +### Miscellaneous Chores + +* **deps:** pin dependencies ([#1](https://github.com/teutonet/oci-images/issues/1)) ([98fee24](https://github.com/teutonet/oci-images/commit/98fee2463e2464390affc4c52c3dbe95151ff5f6)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) diff --git a/images/ckan-dcatapde/Dockerfile b/images/ckan-dcatapde/Dockerfile index 84e35c6e..3799537e 100644 --- a/images/ckan-dcatapde/Dockerfile +++ b/images/ckan-dcatapde/Dockerfile @@ -1,22 +1,35 @@ -FROM ckan/ckan-base:2.10.4 +FROM ckan/ckan-base:2.11.4@sha256:22139325158d49473d910d60256a7dc8437795949bf72507a90f3510f9065438 + +USER root # Install any extensions needed by your CKAN instance # See Dockerfile.dev for more details and examples -RUN pip3 install -e git+https://github.com/ckan/ckanext-dcat.git@v1.6.0#egg=ckanext-dcat + +# renovate: datasource=github-tags depName=ckan/ckanext-dcat extractVersion=^v(?.*)$ +ARG CKANEXT_DCAT_VERSION=1.7.0 + +RUN pip3 install -e git+https://github.com/ckan/ckanext-dcat.git@v${CKANEXT_DCAT_VERSION}#egg=ckanext-dcat RUN pip install -r ${SRC_DIR}/ckanext-dcat/requirements.txt -RUN pip install -e git+https://github.com/ckan/ckanext-harvest.git@v1.5.6#egg=ckanext-harvest +# renovate: datasource=github-tags depName=ckan/ckanext-harvest extractVersion=^v(?.*)$ +ARG CKANEXT_HARVEST_VERSION=1.6.2 + +RUN pip install -e git+https://github.com/ckan/ckanext-harvest.git@v${CKANEXT_HARVEST_VERSION}#egg=ckanext-harvest RUN pip install -r ${SRC_DIR}/ckanext-harvest/requirements.txt -RUN pip3 install -e git+https://github.com/GovDataOfficial/ckanext-dcatde.git@6.7.0#egg=ckanext-dcatde +# renovate: datasource=github-tags depName=GovDataOfficial/ckanext-dcatde +ARG CKANEXT_DCATDE_VERSION=6.10.0 + +RUN pip3 install -e git+https://github.com/GovDataOfficial/ckanext-dcatde.git@${CKANEXT_DCATDE_VERSION}#egg=ckanext-dcatde RUN cd ${SRC_DIR}/ckanext-dcatde \ pip install -r base-requirements.txt -f requirements \ python setup.py develop # Copy custom initialization scripts -COPY docker-entrypoint.d/* /docker-entrypoint.d/ +COPY --chown=ckan:ckan-sys docker-entrypoint.d/02_setup_dcat.sh /docker-entrypoint.d/02_setup_dcat.sh -COPY setup/prerun.py.override ${APP_DIR}/prerun.py +COPY --chown=ckan:ckan-sys setup/prerun.py.override ${APP_DIR}/prerun.py +COPY --chown=ckan:ckan-sys setup/start_ckan.sh.override ${APP_DIR}/start_ckan.sh RUN chown -R ckan /srv/app/ diff --git a/images/ckan-dcatapde/docker-entrypoint.d/01_setup_datapusher.sh b/images/ckan-dcatapde/docker-entrypoint.d/01_setup_datapusher.sh deleted file mode 100644 index d119fb50..00000000 --- a/images/ckan-dcatapde/docker-entrypoint.d/01_setup_datapusher.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -if [[ $CKAN__PLUGINS == *"datapusher"* ]]; then - # Datapusher settings have been configured in the .env file - # Set API token if necessary - if [ -z "$CKAN__DATAPUSHER__API_TOKEN" ] ; then - echo "Set up ckan.datapusher.api_token in the CKAN config file" - ckan config-tool $CKAN_INI "ckan.datapusher.api_token=$(ckan -c $CKAN_INI user token add ckan_admin datapusher | tail -n 1 | tr -d '\t')" - fi -else - echo "Not configuring DataPusher" -fi diff --git a/images/ckan-dcatapde/docker-entrypoint.d/README.md b/images/ckan-dcatapde/docker-entrypoint.d/README.md deleted file mode 100644 index 27fa2922..00000000 --- a/images/ckan-dcatapde/docker-entrypoint.d/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Use scripts in this folder to run extra initialization steps in your custom CKAN images. -Any file with `.sh` or `.py` extension will be executed just after the main initialization -script (`prerun.py`) is executed and just before the web server and supervisor processes are -started. diff --git a/images/ckan-dcatapde/setup/prerun.py.override b/images/ckan-dcatapde/setup/prerun.py.override index 42092cec..b62a4505 100644 --- a/images/ckan-dcatapde/setup/prerun.py.override +++ b/images/ckan-dcatapde/setup/prerun.py.override @@ -2,8 +2,16 @@ import os import sys import subprocess import psycopg2 -import urllib.request, urllib.error, urllib.parse, base64 - +try: + from urllib.request import urlopen + from urllib.request import Request + from urllib.error import URLError +except ImportError: + from urllib2 import urlopen + from urllib2 import Request + from urllib2 import URLError + +import base64 import time import re import json @@ -28,6 +36,7 @@ def check_main_db_connection(retry=None): conn_str = os.environ.get("CKAN_SQLALCHEMY_URL") if not conn_str: print("[prerun] CKAN_SQLALCHEMY_URL not defined, not checking db") + return return check_db_connection(conn_str, retry) @@ -36,6 +45,7 @@ def check_datastore_db_connection(retry=None): conn_str = os.environ.get("CKAN_DATASTORE_WRITE_URL") if not conn_str: print("[prerun] CKAN_DATASTORE_WRITE_URL not defined, not checking db") + return return check_db_connection(conn_str, retry) @@ -74,12 +84,12 @@ def check_solr_connection(retry=None): try: if not username: - connection = urllib.request.urlopen(search_url) + connection = urlopen(search_url) else: - request = urllib.request.Request(search_url) + request_solr = Request(search_url) base64string = base64.b64encode(bytes('%s:%s' % (username, password),'ascii')) - request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8')) - connection = urllib.request.urlopen(request) + request_solr.add_header("Authorization", "Basic %s" % base64string.decode('utf-8')) + connection = urlopen(request_solr) except URLError as e: print(str(e)) print("[prerun] Unable to connect to solr, waiting...") @@ -97,18 +107,18 @@ def check_solr_connection(retry=None): def init_db(): - db_command = ["ckan", "-c", ckan_ini, "db", "upgrade"] + db_command = ["ckan", "-c", ckan_ini, "db", "init"] print("[prerun] Initializing or upgrading db - start") try: subprocess.check_output(db_command, stderr=subprocess.STDOUT) print("[prerun] Initializing or upgrading db - end") except subprocess.CalledProcessError as e: - if "OperationalError" in e.output: - print(e.output) + if "OperationalError" in str(e.output): print("[prerun] Database not ready, waiting a bit before exit...") time.sleep(5) sys.exit(1) else: + print(str(e)) print(e.output) raise e @@ -141,7 +151,6 @@ def init_datastore_db(): connection.commit() print("[prerun] Initializing datastore db - end") - print(datastore_perms.stdout.read()) except psycopg2.Error as e: print("[prerun] Could not initialize datastore") print(str(e)) @@ -197,6 +206,14 @@ def create_sysadmin(): subprocess.call(command) print("[prerun] Made user {0} a sysadmin".format(name)) + # cleanup permissions + # We're running as root before pivoting to uwsgi and dropping privs + data_dir = "%s/storage" % os.environ['CKAN_STORAGE_PATH'] + + command = ["chown", "-R", "ckan:ckan", data_dir] + subprocess.call(command) + print("[prerun] Ensured storage directory is owned by ckan") + if __name__ == "__main__": maintenance = os.environ.get("MAINTENANCE_MODE", "").lower() == "true" @@ -210,5 +227,4 @@ if __name__ == "__main__": check_datastore_db_connection() init_datastore_db() check_solr_connection() - create_sysadmin() - \ No newline at end of file + create_sysadmin() \ No newline at end of file diff --git a/images/ckan-dcatapde/setup/start_ckan.sh.override b/images/ckan-dcatapde/setup/start_ckan.sh.override new file mode 100755 index 00000000..edb0cbab --- /dev/null +++ b/images/ckan-dcatapde/setup/start_ckan.sh.override @@ -0,0 +1,62 @@ +#!/bin/bash + +if [[ $CKAN__PLUGINS == *"datapusher"* ]]; then + # Add ckan.datapusher.api_token to the CKAN config file or deactivate plugin + if [[ -z "${CKAN__DATAPUSHER__API_TOKEN}" ]] + then + echo "No value for ckan.datapusher.api_token deactivate plugin" + CKAN__PLUGINS=$(echo $CKAN__PLUGINS | sed 's/\bdatapusher\b//g' | sed 's/ */ /g' | sed 's/^ *//g' | sed 's/ *$//g') + else + echo "Setting a value for ckan.datapusher.api_token" + ckan config-tool $CKAN_INI ckan.datapusher.api_token="${CKAN__DATAPUSHER__API_TOKEN}" + fi +fi + +# Set up the Secret key used by Beaker and Flask +# This can be overriden using a CKAN___BEAKER__SESSION__SECRET env var +if grep -qE "SECRET_KEY ?= ?$" ckan.ini +then + echo "Setting SECRET_KEY in ini file" + ckan config-tool $CKAN_INI "SECRET_KEY=${SECRET_KEY:-$(python3 -c 'import secrets; print(secrets.token_urlsafe())')}" + ckan config-tool $CKAN_INI "WTF_CSRF_SECRET_KEY=${WTF_CSRF_SECRET_KEY-:$(python3 -c 'import secrets; print(secrets.token_urlsafe())')}" + if [[ -z "${JWT_SECRET}" ]] + then + JWT_SECRET=$(python3 -c 'import secrets; print("string:" + secrets.token_urlsafe())') + fi + ckan config-tool $CKAN_INI "api_token.jwt.encode.secret=string:${JWT_SECRET}" + ckan config-tool $CKAN_INI "api_token.jwt.decode.secret=string:${JWT_SECRET}" +fi + + +# Run the prerun script to init CKAN and create the default admin user +python3 prerun.py + +# Run any startup scripts provided by images extending this one +if [[ -d "/docker-entrypoint.d" ]] +then + for f in /docker-entrypoint.d/*; do + case "$f" in + *.sh) echo "$0: Running init file $f"; . "$f" ;; + *.py) echo "$0: Running init file $f"; python3 "$f"; echo ;; + *) echo "$0: Ignoring $f (not an sh or py file)" ;; + esac + done +fi + +# Set the common uwsgi options +UWSGI_OPTS="--socket /tmp/uwsgi.sock \ + --wsgi-file /srv/app/wsgi.py \ + --module wsgi:application \ + --http [::]:5000 \ + --master --enable-threads \ + --lazy-apps \ + -p 2 -L -b 32768 --vacuum \ + --harakiri $UWSGI_HARAKIRI" + +if [ $? -eq 0 ] +then + # Start uwsgi + uwsgi $UWSGI_OPTS +else + echo "[prerun] failed...not starting CKAN." +fi \ No newline at end of file diff --git a/images/ckan/CHANGELOG.md b/images/ckan/CHANGELOG.md new file mode 100644 index 00000000..e8ecf0a7 --- /dev/null +++ b/images/ckan/CHANGELOG.md @@ -0,0 +1,113 @@ +# Changelog + +## [1.0.16](https://github.com/teutonet/oci-images/compare/ckan-v1.0.15...ckan-v1.0.16) (2025-11-04) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base docker tag to v2.11.4 ([#348](https://github.com/teutonet/oci-images/issues/348)) ([af07008](https://github.com/teutonet/oci-images/commit/af07008242a2b619bc85bdb8e7ce9de770dee789)) + +## [1.0.15](https://github.com/teutonet/oci-images/compare/ckan-v1.0.14...ckan-v1.0.15) (2025-06-02) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base docker tag to v2.11.3 ([#265](https://github.com/teutonet/oci-images/issues/265)) ([cd16a22](https://github.com/teutonet/oci-images/commit/cd16a22c537fd4f248777d6f137ba5f5c9cb4cc6)) + +## [1.0.14](https://github.com/teutonet/oci-images/compare/ckan-v1.0.13...ckan-v1.0.14) (2025-04-22) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.11.2 docker digest to c823a90 ([#254](https://github.com/teutonet/oci-images/issues/254)) ([4232cc1](https://github.com/teutonet/oci-images/commit/4232cc1ed94883902c5cc051772eb4d8fa237416)) + +## [1.0.13](https://github.com/teutonet/oci-images/compare/ckan-v1.0.12...ckan-v1.0.13) (2025-02-10) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base docker tag to v2.11.2 ([#209](https://github.com/teutonet/oci-images/issues/209)) ([4c02d2d](https://github.com/teutonet/oci-images/commit/4c02d2d3a25836e1d9f4af350f8a91f3b6198034)) + +## [1.0.12](https://github.com/teutonet/oci-images/compare/ckan-v1.0.11...ckan-v1.0.12) (2025-01-03) + + +### Miscellaneous Chores + +* **ckan:** change methode to remove datapusher if api key is missing ([#175](https://github.com/teutonet/oci-images/issues/175)) ([d03967f](https://github.com/teutonet/oci-images/commit/d03967f1297be56bd750021140de2a40f3849a44)) +* **deps:** update ckan/ckan-base docker tag to v2.11.1 ([#179](https://github.com/teutonet/oci-images/issues/179)) ([a8c9515](https://github.com/teutonet/oci-images/commit/a8c951510882c3a3a2fc8f60b467bfe2e439aef8)) + +## [1.0.11](https://github.com/teutonet/oci-images/compare/ckan-v1.0.10...ckan-v1.0.11) (2024-12-03) + + +### Miscellaneous Chores + +* **ckan:** auto deactivate datapusher if key is missing ([#172](https://github.com/teutonet/oci-images/issues/172)) ([a33fbae](https://github.com/teutonet/oci-images/commit/a33fbaef25e1dbaf4611400e5cf7468c4ea15d94)) +* **deps:** update ckan/ckan-base:2.11.0 docker digest to bae3f94 ([#164](https://github.com/teutonet/oci-images/issues/164)) ([a76b589](https://github.com/teutonet/oci-images/commit/a76b589c4d67d8a8f7fc693365080ac74f9a6d55)) + +## [1.0.10](https://github.com/teutonet/oci-images/compare/ckan-v1.0.9...ckan-v1.0.10) (2024-11-20) + + +### Miscellaneous Chores + +* **ckan:** update permissions and building ([#162](https://github.com/teutonet/oci-images/issues/162)) ([3dcd6af](https://github.com/teutonet/oci-images/commit/3dcd6af0396162018cdb648add2294026085ecb9)) + +## [1.0.9](https://github.com/teutonet/oci-images/compare/ckan-v1.0.6...ckan-v1.0.7) (2024-11-14) + + +### Bug Fixes + +* **ckan:** change setup script permission ([#152](https://github.com/teutonet/oci-images/issues/152)) ([34f5963](https://github.com/teutonet/oci-images/commit/34f5963b9d70ba4c362328c6669e6d897a90e732)) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.11.0 docker digest to 5a97b86 ([#150](https://github.com/teutonet/oci-images/issues/150)) ([6cf23fb](https://github.com/teutonet/oci-images/commit/6cf23fb239a1d474db145305851178895337d45e)) + +## [1.0.5](https://github.com/teutonet/oci-images/compare/ckan-v1.0.4...ckan-v2.48.0) (2024-10-09) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.11.0 docker digest to 25f6291 ([#88](https://github.com/teutonet/oci-images/issues/88)) ([be0f617](https://github.com/teutonet/oci-images/commit/be0f61712935e390dee66ba4ac59d82d59d05cc5)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) + +## [1.0.4](https://github.com/teutonet/oci-images/compare/ckan-v1.0.3...ckan-v1.0.4) (2024-09-02) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.11.0 docker digest to 0641aad ([#66](https://github.com/teutonet/oci-images/issues/66)) ([ceebf12](https://github.com/teutonet/oci-images/commit/ceebf12341f87b706da467e4d5a411ec4c39dec7)) + +## [1.0.3](https://github.com/teutonet/oci-images/compare/ckan-v1.0.2...ckan-v1.0.3) (2024-08-21) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base docker tag to v2.11.0 ([#62](https://github.com/teutonet/oci-images/issues/62)) ([a8c5091](https://github.com/teutonet/oci-images/commit/a8c50915856fb252b9c33384c4c01e2f3b77c9d6)) + +## [1.0.2](https://github.com/teutonet/oci-images/compare/ckan-v1.0.1...ckan-v1.0.2) (2024-07-03) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.10.4 docker digest to 636e0aa ([8f8e5ec](https://github.com/teutonet/oci-images/commit/8f8e5ec75b61c7cc97497743691c7401c5b6953f)) + +## [1.0.1](https://github.com/teutonet/oci-images/compare/ckan-v1.0.0...ckan-v1.0.1) (2024-06-27) + + +### Miscellaneous Chores + +* **deps:** update ckan/ckan-base:2.10.4 docker digest to 83f67f4 ([2607189](https://github.com/teutonet/oci-images/commit/2607189d8350b1e481c24ce152133c5b29d257f7)) + +## [1.0.0](https://github.com/teutonet/oci-images/compare/ckan-v0.1.0...ckan-v1.0.0) (2024-05-29) + + +### Features + +* **ci:** initial repo setup ([8009c05](https://github.com/teutonet/oci-images/commit/8009c050a2ef05c2d1dd5c6406f6499064442b46)) + + +### Miscellaneous Chores + +* **deps:** pin dependencies ([#1](https://github.com/teutonet/oci-images/issues/1)) ([98fee24](https://github.com/teutonet/oci-images/commit/98fee2463e2464390affc4c52c3dbe95151ff5f6)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) diff --git a/images/ckan/Dockerfile b/images/ckan/Dockerfile index c2bf202a..e2681275 100644 --- a/images/ckan/Dockerfile +++ b/images/ckan/Dockerfile @@ -1,13 +1,8 @@ -FROM ckan/ckan-base:2.10.4 - -# Install any extensions needed by your CKAN instance -# See Dockerfile.dev for more details and examples +FROM ckan/ckan-base:2.11.4@sha256:22139325158d49473d910d60256a7dc8437795949bf72507a90f3510f9065438 # Copy custom initialization scripts -COPY docker-entrypoint.d/* /docker-entrypoint.d/ - -COPY setup/prerun.py.override ${APP_DIR}/prerun.py -RUN chown -R ckan /srv/app/ +COPY --chown=ckan:ckan-sys setup/prerun.py.override ${APP_DIR}/prerun.py +COPY --chown=ckan:ckan-sys setup/start_ckan.sh.override ${APP_DIR}/start_ckan.sh USER ckan \ No newline at end of file diff --git a/images/ckan/docker-entrypoint.d/01_setup_datapusher.sh b/images/ckan/docker-entrypoint.d/01_setup_datapusher.sh deleted file mode 100644 index d119fb50..00000000 --- a/images/ckan/docker-entrypoint.d/01_setup_datapusher.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -if [[ $CKAN__PLUGINS == *"datapusher"* ]]; then - # Datapusher settings have been configured in the .env file - # Set API token if necessary - if [ -z "$CKAN__DATAPUSHER__API_TOKEN" ] ; then - echo "Set up ckan.datapusher.api_token in the CKAN config file" - ckan config-tool $CKAN_INI "ckan.datapusher.api_token=$(ckan -c $CKAN_INI user token add ckan_admin datapusher | tail -n 1 | tr -d '\t')" - fi -else - echo "Not configuring DataPusher" -fi diff --git a/images/ckan/docker-entrypoint.d/README.md b/images/ckan/docker-entrypoint.d/README.md deleted file mode 100644 index 27fa2922..00000000 --- a/images/ckan/docker-entrypoint.d/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Use scripts in this folder to run extra initialization steps in your custom CKAN images. -Any file with `.sh` or `.py` extension will be executed just after the main initialization -script (`prerun.py`) is executed and just before the web server and supervisor processes are -started. diff --git a/images/ckan/setup/prerun.py.override b/images/ckan/setup/prerun.py.override index 5eaba476..b62a4505 100644 --- a/images/ckan/setup/prerun.py.override +++ b/images/ckan/setup/prerun.py.override @@ -2,8 +2,16 @@ import os import sys import subprocess import psycopg2 -import urllib.request, urllib.error, urllib.parse, base64 - +try: + from urllib.request import urlopen + from urllib.request import Request + from urllib.error import URLError +except ImportError: + from urllib2 import urlopen + from urllib2 import Request + from urllib2 import URLError + +import base64 import time import re import json @@ -28,6 +36,7 @@ def check_main_db_connection(retry=None): conn_str = os.environ.get("CKAN_SQLALCHEMY_URL") if not conn_str: print("[prerun] CKAN_SQLALCHEMY_URL not defined, not checking db") + return return check_db_connection(conn_str, retry) @@ -36,6 +45,7 @@ def check_datastore_db_connection(retry=None): conn_str = os.environ.get("CKAN_DATASTORE_WRITE_URL") if not conn_str: print("[prerun] CKAN_DATASTORE_WRITE_URL not defined, not checking db") + return return check_db_connection(conn_str, retry) @@ -74,12 +84,12 @@ def check_solr_connection(retry=None): try: if not username: - connection = urllib.request.urlopen(search_url) + connection = urlopen(search_url) else: - request = urllib.request.Request(search_url) + request_solr = Request(search_url) base64string = base64.b64encode(bytes('%s:%s' % (username, password),'ascii')) - request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8')) - connection = urllib.request.urlopen(request) + request_solr.add_header("Authorization", "Basic %s" % base64string.decode('utf-8')) + connection = urlopen(request_solr) except URLError as e: print(str(e)) print("[prerun] Unable to connect to solr, waiting...") @@ -97,18 +107,18 @@ def check_solr_connection(retry=None): def init_db(): - db_command = ["ckan", "-c", ckan_ini, "db", "upgrade"] + db_command = ["ckan", "-c", ckan_ini, "db", "init"] print("[prerun] Initializing or upgrading db - start") try: subprocess.check_output(db_command, stderr=subprocess.STDOUT) print("[prerun] Initializing or upgrading db - end") except subprocess.CalledProcessError as e: - if "OperationalError" in e.output: - print(e.output) + if "OperationalError" in str(e.output): print("[prerun] Database not ready, waiting a bit before exit...") time.sleep(5) sys.exit(1) else: + print(str(e)) print(e.output) raise e @@ -141,7 +151,6 @@ def init_datastore_db(): connection.commit() print("[prerun] Initializing datastore db - end") - print(datastore_perms.stdout.read()) except psycopg2.Error as e: print("[prerun] Could not initialize datastore") print(str(e)) @@ -197,6 +206,13 @@ def create_sysadmin(): subprocess.call(command) print("[prerun] Made user {0} a sysadmin".format(name)) + # cleanup permissions + # We're running as root before pivoting to uwsgi and dropping privs + data_dir = "%s/storage" % os.environ['CKAN_STORAGE_PATH'] + + command = ["chown", "-R", "ckan:ckan", data_dir] + subprocess.call(command) + print("[prerun] Ensured storage directory is owned by ckan") if __name__ == "__main__": @@ -211,5 +227,4 @@ if __name__ == "__main__": check_datastore_db_connection() init_datastore_db() check_solr_connection() - create_sysadmin() - \ No newline at end of file + create_sysadmin() \ No newline at end of file diff --git a/images/ckan/setup/start_ckan.sh.override b/images/ckan/setup/start_ckan.sh.override old mode 100644 new mode 100755 index 0c8409c9..edb0cbab --- a/images/ckan/setup/start_ckan.sh.override +++ b/images/ckan/setup/start_ckan.sh.override @@ -1,25 +1,35 @@ -#!/bin/sh +#!/bin/bash -# Add ckan.datapusher.api_token to the CKAN config file (updated with corrected value later) -ckan config-tool $CKAN_INI ckan.datapusher.api_token=xxx +if [[ $CKAN__PLUGINS == *"datapusher"* ]]; then + # Add ckan.datapusher.api_token to the CKAN config file or deactivate plugin + if [[ -z "${CKAN__DATAPUSHER__API_TOKEN}" ]] + then + echo "No value for ckan.datapusher.api_token deactivate plugin" + CKAN__PLUGINS=$(echo $CKAN__PLUGINS | sed 's/\bdatapusher\b//g' | sed 's/ */ /g' | sed 's/^ *//g' | sed 's/ *$//g') + else + echo "Setting a value for ckan.datapusher.api_token" + ckan config-tool $CKAN_INI ckan.datapusher.api_token="${CKAN__DATAPUSHER__API_TOKEN}" + fi +fi # Set up the Secret key used by Beaker and Flask # This can be overriden using a CKAN___BEAKER__SESSION__SECRET env var -if grep -E "beaker.session.secret ?= ?$" ckan.ini +if grep -qE "SECRET_KEY ?= ?$" ckan.ini then - echo "Setting beaker.session.secret in ini file" - ckan config-tool $CKAN_INI "beaker.session.secret=$(python3 -c 'import secrets; print(secrets.token_urlsafe())')" - ckan config-tool $CKAN_INI "WTF_CSRF_SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_urlsafe())')" - JWT_SECRET=$(python3 -c 'import secrets; print("string:" + secrets.token_urlsafe())') - ckan config-tool $CKAN_INI "api_token.jwt.encode.secret=${JWT_SECRET}" - ckan config-tool $CKAN_INI "api_token.jwt.decode.secret=${JWT_SECRET}" + echo "Setting SECRET_KEY in ini file" + ckan config-tool $CKAN_INI "SECRET_KEY=${SECRET_KEY:-$(python3 -c 'import secrets; print(secrets.token_urlsafe())')}" + ckan config-tool $CKAN_INI "WTF_CSRF_SECRET_KEY=${WTF_CSRF_SECRET_KEY-:$(python3 -c 'import secrets; print(secrets.token_urlsafe())')}" + if [[ -z "${JWT_SECRET}" ]] + then + JWT_SECRET=$(python3 -c 'import secrets; print("string:" + secrets.token_urlsafe())') + fi + ckan config-tool $CKAN_INI "api_token.jwt.encode.secret=string:${JWT_SECRET}" + ckan config-tool $CKAN_INI "api_token.jwt.decode.secret=string:${JWT_SECRET}" fi -# Run the prerun script to init CKAN and create the default admin user -sudo -u ckan -EH python3 prerun.py -echo "Set up ckan.datapusher.api_token in the CKAN config file" -ckan config-tool $CKAN_INI "ckan.datapusher.api_token=$(ckan -c $CKAN_INI user token add ckan_admin datapusher | tail -n 1 | tr -d '\t')" +# Run the prerun script to init CKAN and create the default admin user +python3 prerun.py # Run any startup scripts provided by images extending this one if [[ -d "/docker-entrypoint.d" ]] @@ -30,17 +40,14 @@ then *.py) echo "$0: Running init file $f"; python3 "$f"; echo ;; *) echo "$0: Ignoring $f (not an sh or py file)" ;; esac - echo done fi # Set the common uwsgi options -UWSGI_OPTS="--plugins http,python \ - --socket /tmp/uwsgi.sock \ +UWSGI_OPTS="--socket /tmp/uwsgi.sock \ --wsgi-file /srv/app/wsgi.py \ --module wsgi:application \ - --uid 92 --gid 92 \ - --http 0.0.0.0:5000 \ + --http [::]:5000 \ --master --enable-threads \ --lazy-apps \ -p 2 -L -b 32768 --vacuum \ @@ -48,10 +55,8 @@ UWSGI_OPTS="--plugins http,python \ if [ $? -eq 0 ] then - # Start supervisord - supervisord --configuration /etc/supervisord.conf & # Start uwsgi - sudo -u ckan -EH uwsgi $UWSGI_OPTS + uwsgi $UWSGI_OPTS else echo "[prerun] failed...not starting CKAN." -fi +fi \ No newline at end of file diff --git a/images/ckan/setup/start_ckan_development.sh.override b/images/ckan/setup/start_ckan_development.sh.override deleted file mode 100644 index 93ce8141..00000000 --- a/images/ckan/setup/start_ckan_development.sh.override +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/sh - -# Install any local extensions in the src_extensions volume -echo "Looking for local extensions to install..." -echo "Extension dir contents:" -ls -la $SRC_EXTENSIONS_DIR -for i in $SRC_EXTENSIONS_DIR/* -do - if [ -d $i ]; - then - - if [ -f $i/pip-requirements.txt ]; - then - pip install -r $i/pip-requirements.txt - echo "Found requirements file in $i" - fi - if [ -f $i/requirements.txt ]; - then - pip install -r $i/requirements.txt - echo "Found requirements file in $i" - fi - if [ -f $i/dev-requirements.txt ]; - then - pip install -r $i/dev-requirements.txt - echo "Found dev-requirements file in $i" - fi - if [ -f $i/setup.py ]; - then - cd $i - python3 $i/setup.py develop - echo "Found setup.py file in $i" - cd $APP_DIR - fi - - # Point `use` in test.ini to location of `test-core.ini` - if [ -f $i/test.ini ]; - then - echo "Updating \`test.ini\` reference to \`test-core.ini\` for plugin $i" - ckan config-tool $i/test.ini "use = config:../../src/ckan/test-core.ini" - fi - fi -done - -# Set debug to true -echo "Enabling debug mode" -ckan config-tool $CKAN_INI -s DEFAULT "debug = true" - -# Add ckan.datapusher.api_token to the CKAN config file (updated with corrected value later) -ckan config-tool $CKAN_INI ckan.datapusher.api_token=xxx - -# Set up the Secret key used by Beaker and Flask -# This can be overriden using a CKAN___BEAKER__SESSION__SECRET env var -if grep -E "beaker.session.secret ?= ?$" ckan.ini -then - echo "Setting beaker.session.secret in ini file" - ckan config-tool $CKAN_INI "beaker.session.secret=$(python3 -c 'import secrets; print(secrets.token_urlsafe())')" - ckan config-tool $CKAN_INI "WTF_CSRF_SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_urlsafe())')" - JWT_SECRET=$(python3 -c 'import secrets; print("string:" + secrets.token_urlsafe())') - ckan config-tool $CKAN_INI "api_token.jwt.encode.secret=${JWT_SECRET}" - ckan config-tool $CKAN_INI "api_token.jwt.decode.secret=${JWT_SECRET}" -fi - -# Update the plugins setting in the ini file with the values defined in the env var -echo "Loading the following plugins: $CKAN__PLUGINS" -ckan config-tool $CKAN_INI "ckan.plugins = $CKAN__PLUGINS" - -# Update test-core.ini DB, SOLR & Redis settings -echo "Loading test settings into test-core.ini" -ckan config-tool $SRC_DIR/ckan/test-core.ini \ - "sqlalchemy.url = $TEST_CKAN_SQLALCHEMY_URL" \ - "ckan.datastore.write_url = $TEST_CKAN_DATASTORE_WRITE_URL" \ - "ckan.datastore.read_url = $TEST_CKAN_DATASTORE_READ_URL" \ - "solr_url = $TEST_CKAN_SOLR_URL" \ - "ckan.redis.url = $TEST_CKAN_REDIS_URL" - -# Run the prerun script to init CKAN and create the default admin user -sudo -u ckan -EH python3 prerun.py - -echo "Set up ckan.datapusher.api_token in the CKAN config file" -ckan config-tool $CKAN_INI "ckan.datapusher.api_token=$(ckan -c $CKAN_INI user token add ckan_admin datapusher | tail -n 1 | tr -d '\t')" - -# Run any startup scripts provided by images extending this one -if [[ -d "/docker-entrypoint.d" ]] -then - for f in /docker-entrypoint.d/*; do - case "$f" in - *.sh) echo "$0: Running init file $f"; . "$f" ;; - *.py) echo "$0: Running init file $f"; python3 "$f"; echo ;; - *) echo "$0: Ignoring $f (not an sh or py file)" ;; - esac - echo - done -fi - -# Start supervisord -supervisord --configuration /etc/supervisord.conf & - -# Start the development server with automatic reload -sudo -u ckan -EH ckan -c $CKAN_INI run -H 0.0.0.0 \ No newline at end of file diff --git a/images/cnpg/CHANGELOG.md b/images/cnpg/CHANGELOG.md new file mode 100644 index 00000000..bd9b35be --- /dev/null +++ b/images/cnpg/CHANGELOG.md @@ -0,0 +1,43 @@ +# Changelog + +## [16.1.0](https://github.com/teutonet/oci-images/compare/cnpg-v16.0.2...cnpg-v16.1.0) (2026-04-16) + + +### Features + +* update postgis image ([#408](https://github.com/teutonet/oci-images/issues/408)) ([e5b68e6](https://github.com/teutonet/oci-images/commit/e5b68e641d665fc3fae8affa39b54748bfce5c90)) + + +### Miscellaneous Chores + +* **deps:** update ghcr.io/cloudnative-pg/postgis:16-3.6-system-trixie docker digest to 412f939 ([#418](https://github.com/teutonet/oci-images/issues/418)) ([7506c1d](https://github.com/teutonet/oci-images/commit/7506c1d106ad0f2e5c831f088c04b74af072db8b)) +* **deps:** update ghcr.io/cloudnative-pg/postgis:16.11-3.6.1-system-trixie docker digest to 0a54b4b ([#392](https://github.com/teutonet/oci-images/issues/392)) ([749bf24](https://github.com/teutonet/oci-images/commit/749bf2454926f19cfecd2a33f4116a6b46009720)) + +## [16.0.2](https://github.com/teutonet/oci-images/compare/cnpg-v16.0.1...cnpg-v16.0.2) (2026-01-19) + + +### Features + +* **cnpg:** add cnpg image ([#380](https://github.com/teutonet/oci-images/issues/380)) ([ece09de](https://github.com/teutonet/oci-images/commit/ece09dedf8d5e52a0f98c15aa59cf6a83524356f)) + + +### Miscellaneous Chores + +* **deps:** pin dependencies ([#377](https://github.com/teutonet/oci-images/issues/377)) ([a093ec4](https://github.com/teutonet/oci-images/commit/a093ec4bd48afb036f890c7c5c43c8cff3b7c419)) +* **deps:** update ghcr.io/cloudnative-pg/postgis:16.11-3.6.1-system-trixie docker digest to 52ee87e ([#386](https://github.com/teutonet/oci-images/issues/386)) ([98ec21d](https://github.com/teutonet/oci-images/commit/98ec21d2c390f657f26aa4ed90500a346859f66f)) +* **images/cnpg:** correct release version ([#388](https://github.com/teutonet/oci-images/issues/388)) ([b9c0d00](https://github.com/teutonet/oci-images/commit/b9c0d007c3a3e5adcf4c22c44798cddf92eb7703)) +* **main:** [bot] release cnpg:16.0.1 ([#383](https://github.com/teutonet/oci-images/issues/383)) ([1f43a60](https://github.com/teutonet/oci-images/commit/1f43a601b72d269baef37e47b8df4fdb25807dd9)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) + +## [16.0.1](https://github.com/teutonet/oci-images/compare/cnpg-v16.0.0...cnpg-v16.0.1) (2026-01-09) + + +### Features + +* **cnpg:** add cnpg image ([#380](https://github.com/teutonet/oci-images/issues/380)) ([ece09de](https://github.com/teutonet/oci-images/commit/ece09dedf8d5e52a0f98c15aa59cf6a83524356f)) + + +### Miscellaneous Chores + +* **deps:** pin dependencies ([#377](https://github.com/teutonet/oci-images/issues/377)) ([a093ec4](https://github.com/teutonet/oci-images/commit/a093ec4bd48afb036f890c7c5c43c8cff3b7c419)) diff --git a/images/cnpg/Dockerfile b/images/cnpg/Dockerfile new file mode 100644 index 00000000..4433b6cd --- /dev/null +++ b/images/cnpg/Dockerfile @@ -0,0 +1,57 @@ +FROM ghcr.io/cloudnative-pg/postgis:17-3.6-system-trixie@sha256:c3ed5fbc79c23ecc7c6042d226b7285fad915b6a2eb5880268acaa38cbd7c66b AS base + +ARG PG_MAJOR=17 + +FROM base AS extension-builder + +USER root + +ENV USE_PGXS=1 + +# git make clang llvm +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + build-essential unzip wget \ + postgresql-server-dev-$PG_MAJOR libpq-dev clang llvm + +# IBAN validation +WORKDIR /iban +# fixed to latest commit on https://github.com/ol-teuto/PostgreSQL-IBAN/tree/refactor +# update git commit id here when that branch is updated +ARG POSTGRESQL_IBAN_VERSION=c836207bca039484f49328331a8e3c4876fbb4e6 + +RUN wget -O iban.zip https://github.com/yorickdewid/PostgreSQL-IBAN/archive/${POSTGRESQL_IBAN_VERSION}.zip && \ + unzip iban.zip +RUN cd /iban/PostgreSQL-IBAN-${POSTGRESQL_IBAN_VERSION} && \ + make clean all install + +# renovate: datasource=github-tags depName=pgMemento/pgMemento extractVersion=^v(?.*)$ +ARG PGMEMENTO_VERSION=0.7.4 + +WORKDIR /pgmemento +RUN wget -O pgmemento.zip https://github.com/pgMemento/pgMemento/releases/download/v${PGMEMENTO_VERSION}/pgmemento-${PGMEMENTO_VERSION}.zip && \ + unzip pgmemento.zip && \ + cd /pgmemento/pgmemento-${PGMEMENTO_VERSION} && \ + make && \ + make install + +# json-schema validation +RUN mkdir -p /usr/local/share/postgres/extensions +# This repository does not have tags, so use a specific commit instead +RUN wget -O /usr/local/share/postgres/extensions/postgres-json-schema--0.1.1.sql https://raw.githubusercontent.com/gavinwahl/postgres-json-schema/570e19f5b2b4e6ff1414eebe2191e14c437760d9/postgres-json-schema--0.1.1.sql +RUN wget -O /usr/local/share/postgres/extensions/postgres-json-schema.control https://raw.githubusercontent.com/gavinwahl/postgres-json-schema/570e19f5b2b4e6ff1414eebe2191e14c437760d9/postgres-json-schema.control + +FROM base AS final + +# json-schema validation +COPY --from=extension-builder /usr/local/share/postgres/extensions/postgres-json-schema* /usr/share/postgresql/$PG_MAJOR/extension/ + +# pgmemento (audit trail) +COPY --from=extension-builder /usr/share/postgresql/$PG_MAJOR/extension/pgmemento* /usr/share/postgresql/$PG_MAJOR/extension/ + +# iban +COPY --from=extension-builder /usr/share/postgresql/$PG_MAJOR/extension/iban* /usr/share/postgresql/$PG_MAJOR/extension/ +COPY --from=extension-builder /usr/lib/postgresql/$PG_MAJOR/lib/iban.so /usr/lib/postgresql/$PG_MAJOR/lib/iban.so +COPY --from=extension-builder /usr/lib/postgresql/$PG_MAJOR/lib/bitcode/iban.index.bc /usr/lib/postgresql/$PG_MAJOR/lib/bitcode/iban.index.bc +COPY --from=extension-builder /usr/lib/postgresql/$PG_MAJOR/lib/bitcode/iban/ /usr/lib/postgresql/$PG_MAJOR/lib/bitcode/iban/ diff --git a/images/masterportal-v2/CHANGELOG.md b/images/masterportal-v2/CHANGELOG.md new file mode 100644 index 00000000..9cf4d6ba --- /dev/null +++ b/images/masterportal-v2/CHANGELOG.md @@ -0,0 +1,61 @@ +# Changelog + +## [2.51.2](https://github.com/teutonet/oci-images/compare/masterportal-v2-v2.51.1...masterportal-v2-v2.51.2) (2025-03-05) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.27.4 ([#210](https://github.com/teutonet/oci-images/issues/210)) ([274faf6](https://github.com/teutonet/oci-images/commit/274faf63572b4bc09e6ef3336920107f5fc573b7)) +* **deps:** update nginx:1.27.3-alpine docker digest to 814a8e8 ([#192](https://github.com/teutonet/oci-images/issues/192)) ([6d799f6](https://github.com/teutonet/oci-images/commit/6d799f686f8a84d5848205e95faefb33e5284a2c)) +* **deps:** update nginx:1.27.4-alpine docker digest to 4ff102c ([#217](https://github.com/teutonet/oci-images/issues/217)) ([ee140ec](https://github.com/teutonet/oci-images/commit/ee140ecf5ff12a56fbd9cd026bb0ad6547e71730)) +* **masterportal:** update masterportal versions ([#218](https://github.com/teutonet/oci-images/issues/218)) ([c82aa1b](https://github.com/teutonet/oci-images/commit/c82aa1b346e028366229ddc11b7751a7e6f5d442)) + +## [2.51.1](https://github.com/teutonet/oci-images/compare/masterportal-v2-v2.51.0...masterportal-v2-v2.51.1) (2025-01-03) + + +### Miscellaneous Chores + +* **deps:** update nginx:1.27.3-alpine docker digest to 4152318 ([#171](https://github.com/teutonet/oci-images/issues/171)) ([1de27bc](https://github.com/teutonet/oci-images/commit/1de27bce6caa44cd01eaf98f59debb62a2859566)) + +## [2.51.0](https://github.com/teutonet/oci-images/compare/masterportal-v2-v2.49.4...masterportal-v2-v2.48.0) (2024-11-29) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.27.3 ([#166](https://github.com/teutonet/oci-images/issues/166)) ([fca7e73](https://github.com/teutonet/oci-images/commit/fca7e736fbee3de8fb75c51b144c84f1496a895e)) +* **masterportal:** add cesium config to dockerfile ([#169](https://github.com/teutonet/oci-images/issues/169)) ([6526a6e](https://github.com/teutonet/oci-images/commit/6526a6e43be87847c5ac83176efda21775528bc9)) + +## [2.49.3](https://github.com/teutonet/oci-images/compare/masterportal-v2-v2.49.2...masterportal-v2-v2.49.3) (2024-11-13) + + +### Miscellaneous Chores + +* **deps:** update nginx:1.27.2-alpine docker digest to 88cad85 ([#141](https://github.com/teutonet/oci-images/issues/141)) ([5fbb230](https://github.com/teutonet/oci-images/commit/5fbb23087d99e000e930fa47031ce5fe9d4fead9)) + +## [2.49.2](https://github.com/teutonet/oci-images/compare/masterportal-v2-v2.49.1...masterportal-v2-v2.49.2) (2024-11-12) + + +### Miscellaneous Chores + +* **deps:** update nginx:1.27.2-alpine docker digest to d44ffb1 ([#136](https://github.com/teutonet/oci-images/issues/136)) ([02b8da2](https://github.com/teutonet/oci-images/commit/02b8da2e4df2474bbda401289f0396e02f4f3e48)) + +## [2.49.1](https://github.com/teutonet/oci-images/compare/masterportal-v2-v2.49.0...masterportal-v2-v2.49.1) (2024-10-09) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.27.2 ([#113](https://github.com/teutonet/oci-images/issues/113)) ([808dfe7](https://github.com/teutonet/oci-images/commit/808dfe7078bf2ecf46e9db1fe16b78dfc79e9d26)) +* **deps:** update nginx:1.27.2-alpine docker digest to 2140dad ([#114](https://github.com/teutonet/oci-images/issues/114)) ([59d860e](https://github.com/teutonet/oci-images/commit/59d860e2823eadc938f83de79b43c48be70e08c3)) + +## [2.48.0](https://github.com/teutonet/oci-images/compare/masterportal-v2-v2.48.0...masterportal-v2-v2.48.0) (2024-09-26) + + +### Features + +* **masterportal:** add masterportal to oci repo ([#72](https://github.com/teutonet/oci-images/issues/72)) ([88d1d24](https://github.com/teutonet/oci-images/commit/88d1d24d4851db5b874a739324e28b3e90121de8)) + + +### Miscellaneous Chores + +* **deps:** pin nginx docker tag to c04c18a ([#75](https://github.com/teutonet/oci-images/issues/75)) ([aaa2607](https://github.com/teutonet/oci-images/commit/aaa2607ea0f6d36c533b0750046ac838353547a8)) +* **deps:** update nginx:1.27.1-alpine docker digest to a5127da ([#87](https://github.com/teutonet/oci-images/issues/87)) ([68d3859](https://github.com/teutonet/oci-images/commit/68d385919f78f6f94ed05dbd50b8caa01f223d35)) diff --git a/images/masterportal-v2/Dockerfile b/images/masterportal-v2/Dockerfile new file mode 100644 index 00000000..b14871c6 --- /dev/null +++ b/images/masterportal-v2/Dockerfile @@ -0,0 +1,27 @@ +FROM nginx:1.29.5-alpine@sha256:1d13701a5f9f3fb01aaa88cef2344d65b6b5bf6b7d9fa4cf0dca557a8d7702ba + +# renovate: datasource=bitbucket-tags depName=geowerkstatt-hamburg/masterportal extractVersion=^v(?2.*)$ +ENV MASTERPORTAL_VERSION=2.52.0 + +# download and restructure Masterportal +RUN curl -fsLw "status %{http_code}, size: %{size_download}" \ + -o /tmp/masterportal.zip \ + https://bitbucket.org/geowerkstatt-hamburg/masterportal/downloads/examples-$MASTERPORTAL_VERSION.zip \ + && unzip -d /tmp/masterportal /tmp/masterportal.zip \ + && rm -v /tmp/masterportal.zip \ + && mv /tmp/masterportal/Basic /usr/share/nginx/html/upstream \ + && mv /tmp/masterportal/mastercode/* /usr/share/nginx/html/upstream/mastercode \ + && rmdir /tmp/masterportal/mastercode /tmp/masterportal \ + && sed -i 's#\.\./mastercode/[^/]*/#./mastercode/#g' /usr/share/nginx/html/upstream/index.html \ + && sed -i '/const Config = {/a \ cesiumLibrary: "https://cesium.com/downloads/cesiumjs/releases/1.95/Build/Cesium/Cesium.js",' /usr/share/nginx/html/upstream/config.js + +# layer git-sync volume over upstream +# rewrite the hard-coded version number in some paths to reduce the necessary changes to overlays for updates +# direct the client to let the server confirm that the cached files are still up to date every time, this should solve the stale cache problems that are exacerbated by the rewrite rule but existed anyway +# this configuration is done as a modification instead of a copied file to pick up new default settings after updates +RUN sed -i 's#location / {#\0 add_header Cache-Control no-cache; rewrite ^/$ /index.html; rewrite ^/mastercode/'`printf %s "$MASTERPORTAL_VERSION" | sed 's/\./_/g'`'/(.*)$ /mastercode/$1; try_files /synced/current/$uri /upstream/$uri =404;#' /etc/nginx/conf.d/default.conf + +# use tmp files and other port to allow running as non-root user as per https://hub.docker.com/_/nginx +RUN sed -i 's#pid .*#pid /tmp/nginx.pid;#' /etc/nginx/nginx.conf \ + && for i in client_body proxy fastcgi uwsgi scgi; do sed -i "s#http {#\\0 ${i}_temp_path /tmp/${i}_temp;#" /etc/nginx/nginx.conf || exit 1; done \ + && sed -i 's#listen \+80#listen 8080#' /etc/nginx/conf.d/default.conf diff --git a/images/masterportal-v3/CHANGELOG.md b/images/masterportal-v3/CHANGELOG.md new file mode 100644 index 00000000..b5b49a7f --- /dev/null +++ b/images/masterportal-v3/CHANGELOG.md @@ -0,0 +1,192 @@ +# Changelog + +## [3.4.19](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.18...masterportal-v3-v3.4.19) (2025-12-22) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.17.1 ([#375](https://github.com/teutonet/oci-images/issues/375)) ([da5f441](https://github.com/teutonet/oci-images/commit/da5f441337bbcfcf1617623be0dd530ce686cb55)) +* **deps:** update nginx docker tag to v1.29.3 ([#347](https://github.com/teutonet/oci-images/issues/347)) ([a182207](https://github.com/teutonet/oci-images/commit/a182207446c471104d372431a38788463cabed6d)) +* **deps:** update nginx docker tag to v1.29.4 ([#371](https://github.com/teutonet/oci-images/issues/371)) ([7f3d2ec](https://github.com/teutonet/oci-images/commit/7f3d2ec638e500535217b98a5d4ab218c48b7cb3)) + +## [3.4.18](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.17...masterportal-v3-v3.4.18) (2025-12-04) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.17.0 ([#366](https://github.com/teutonet/oci-images/issues/366)) ([a724e75](https://github.com/teutonet/oci-images/commit/a724e75ed380de6be09cab005637e1aaa730e533)) + +## [3.4.17](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.16...masterportal-v3-v3.4.17) (2025-12-03) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.16.2 ([#365](https://github.com/teutonet/oci-images/issues/365)) ([a11842f](https://github.com/teutonet/oci-images/commit/a11842fb1ac911d17b8fd6b5754820caaec13a09)) + +## [3.4.16](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.15...masterportal-v3-v3.4.16) (2025-11-13) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.16.1 ([#357](https://github.com/teutonet/oci-images/issues/357)) ([baf80b5](https://github.com/teutonet/oci-images/commit/baf80b53248653f2cec442721f24aa8903f540e8)) + +## [3.4.15](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.14...masterportal-v3-v3.4.15) (2025-11-11) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.16.0 ([#352](https://github.com/teutonet/oci-images/issues/352)) ([48040b1](https://github.com/teutonet/oci-images/commit/48040b15c0c17727aed377b085019cc796eb9701)) + +## [3.4.14](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.13...masterportal-v3-v3.4.14) (2025-10-13) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.15.0 ([#340](https://github.com/teutonet/oci-images/issues/340)) ([2f0f6fd](https://github.com/teutonet/oci-images/commit/2f0f6fd70d808419af2f31822c1ee50b53522816)) +* **deps:** update nginx docker tag to v1.29.2 ([#342](https://github.com/teutonet/oci-images/issues/342)) ([d81cb30](https://github.com/teutonet/oci-images/commit/d81cb30c0607cc2b02fbdcb85f7be23c64ce183b)) + +## [3.4.13](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.12...masterportal-v3-v3.4.13) (2025-09-17) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.14.0 ([#330](https://github.com/teutonet/oci-images/issues/330)) ([9747069](https://github.com/teutonet/oci-images/commit/9747069affc7508b5b1f639266b09aeba1b47c10)) + +## [3.4.12](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.11...masterportal-v3-v3.4.12) (2025-08-29) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.29.1 ([#326](https://github.com/teutonet/oci-images/issues/326)) ([a533dc8](https://github.com/teutonet/oci-images/commit/a533dc89e0d49ada3bc7700102ee8702c30bc60f)) + +## [3.4.11](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.10...masterportal-v3-v3.4.11) (2025-08-07) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.13.0 ([#305](https://github.com/teutonet/oci-images/issues/305)) ([c9bde34](https://github.com/teutonet/oci-images/commit/c9bde34ac09fc1de99bbdb208c6b7b8c98267492)) + +## [3.4.10](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.9...masterportal-v3-v3.4.10) (2025-07-21) + + +### Miscellaneous Chores + +* **deps:** update nginx:1.29.0-alpine docker digest to d67ea0d ([#298](https://github.com/teutonet/oci-images/issues/298)) ([9032b64](https://github.com/teutonet/oci-images/commit/9032b648cbda5fee9bd9bf922bf4be7bfa4c354c)) + +## [3.4.9](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.8...masterportal-v3-v3.4.9) (2025-07-17) + + +### Miscellaneous Chores + +* **deps:** update nginx:1.29.0-alpine docker digest to f741b7f ([#295](https://github.com/teutonet/oci-images/issues/295)) ([8ad8a70](https://github.com/teutonet/oci-images/commit/8ad8a70808e3f88fa7957bbeb7379463b82ef2fb)) + +## [3.4.8](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.7...masterportal-v3-v3.4.8) (2025-07-09) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.12.1 ([#293](https://github.com/teutonet/oci-images/issues/293)) ([f6eec87](https://github.com/teutonet/oci-images/commit/f6eec870d3600da866351ed9360ab13e1614000d)) + +## [3.4.7](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.6...masterportal-v3-v3.4.7) (2025-07-03) + + +### Miscellaneous Chores + +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.11.0 ([#278](https://github.com/teutonet/oci-images/issues/278)) ([7ecedd1](https://github.com/teutonet/oci-images/commit/7ecedd1d120b3093e90446e685c03abb60e06989)) +* **deps:** update dependency geowerkstatt-hamburg/masterportal to v3.12.0 ([#291](https://github.com/teutonet/oci-images/issues/291)) ([ee3755f](https://github.com/teutonet/oci-images/commit/ee3755fc07b784aa8e4f0837f58961074532178e)) +* **deps:** update nginx docker tag to v1.29.0 ([#287](https://github.com/teutonet/oci-images/issues/287)) ([a5c1fd8](https://github.com/teutonet/oci-images/commit/a5c1fd8b435311564b65202ef9777ea7975db7ab)) +* **deps:** update nginx:1.29.0-alpine docker digest to b2e814d ([#288](https://github.com/teutonet/oci-images/issues/288)) ([6b1f67c](https://github.com/teutonet/oci-images/commit/6b1f67c60e21a39f9553478ec621b4f50a0f492a)) +* **renovate:** add renovate version update ([#276](https://github.com/teutonet/oci-images/issues/276)) ([bf287ea](https://github.com/teutonet/oci-images/commit/bf287ea8788fa9a2fb36ba2fcae0d18ed938bc63)) + +## [3.4.6](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.5...masterportal-v3-v3.4.6) (2025-04-29) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.28.0 ([#259](https://github.com/teutonet/oci-images/issues/259)) ([77c354b](https://github.com/teutonet/oci-images/commit/77c354bd1d563c69652af935492bbc2c14b9995d)) + +## [3.4.5](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.4...masterportal-v3-v3.4.5) (2025-04-22) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.27.5 ([#253](https://github.com/teutonet/oci-images/issues/253)) ([ec67735](https://github.com/teutonet/oci-images/commit/ec67735709997c695246f23489e0218187febc5f)) + +## [3.4.4](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.3...masterportal-v3-v3.4.4) (2025-03-05) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.27.4 ([#210](https://github.com/teutonet/oci-images/issues/210)) ([274faf6](https://github.com/teutonet/oci-images/commit/274faf63572b4bc09e6ef3336920107f5fc573b7)) +* **deps:** update nginx:1.27.3-alpine docker digest to 814a8e8 ([#192](https://github.com/teutonet/oci-images/issues/192)) ([6d799f6](https://github.com/teutonet/oci-images/commit/6d799f686f8a84d5848205e95faefb33e5284a2c)) +* **deps:** update nginx:1.27.4-alpine docker digest to 4ff102c ([#217](https://github.com/teutonet/oci-images/issues/217)) ([ee140ec](https://github.com/teutonet/oci-images/commit/ee140ecf5ff12a56fbd9cd026bb0ad6547e71730)) +* **masterportal:** update masterportal versions ([#218](https://github.com/teutonet/oci-images/issues/218)) ([c82aa1b](https://github.com/teutonet/oci-images/commit/c82aa1b346e028366229ddc11b7751a7e6f5d442)) + +## [3.4.3](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.2...masterportal-v3-v3.4.3) (2025-01-03) + + +### Miscellaneous Chores + +* **deps:** update nginx:1.27.3-alpine docker digest to 4152318 ([#171](https://github.com/teutonet/oci-images/issues/171)) ([1de27bc](https://github.com/teutonet/oci-images/commit/1de27bce6caa44cd01eaf98f59debb62a2859566)) + +## [3.4.2](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.4.1...masterportal-v3-v2.48.0) (2024-11-29) + + +### Miscellaneous Chores + +* **deps:** update nginx docker tag to v1.27.3 ([#166](https://github.com/teutonet/oci-images/issues/166)) ([fca7e73](https://github.com/teutonet/oci-images/commit/fca7e736fbee3de8fb75c51b144c84f1496a895e)) +* **masterportal:** add cesium config to dockerfile ([#169](https://github.com/teutonet/oci-images/issues/169)) ([6526a6e](https://github.com/teutonet/oci-images/commit/6526a6e43be87847c5ac83176efda21775528bc9)) + +## [3.4.0](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.1.1...masterportal-v3-v2.48.0) (2024-11-15) + + +### Features + +* **masterportal:** add masterportal to oci repo ([#72](https://github.com/teutonet/oci-images/issues/72)) ([88d1d24](https://github.com/teutonet/oci-images/commit/88d1d24d4851db5b874a739324e28b3e90121de8)) + + +### Miscellaneous Chores + +* **deps:** pin nginx docker tag to c04c18a ([#75](https://github.com/teutonet/oci-images/issues/75)) ([aaa2607](https://github.com/teutonet/oci-images/commit/aaa2607ea0f6d36c533b0750046ac838353547a8)) +* **deps:** update nginx docker tag to v1.27.2 ([#113](https://github.com/teutonet/oci-images/issues/113)) ([808dfe7](https://github.com/teutonet/oci-images/commit/808dfe7078bf2ecf46e9db1fe16b78dfc79e9d26)) +* **deps:** update nginx:1.27.1-alpine docker digest to a5127da ([#87](https://github.com/teutonet/oci-images/issues/87)) ([68d3859](https://github.com/teutonet/oci-images/commit/68d385919f78f6f94ed05dbd50b8caa01f223d35)) +* **deps:** update nginx:1.27.2-alpine docker digest to 2140dad ([#114](https://github.com/teutonet/oci-images/issues/114)) ([59d860e](https://github.com/teutonet/oci-images/commit/59d860e2823eadc938f83de79b43c48be70e08c3)) +* **deps:** update nginx:1.27.2-alpine docker digest to 74175cf ([#149](https://github.com/teutonet/oci-images/issues/149)) ([8e1b9d1](https://github.com/teutonet/oci-images/commit/8e1b9d17fcdc7603ab3b74fb74d171b559af669e)) +* **deps:** update nginx:1.27.2-alpine docker digest to 88cad85 ([#141](https://github.com/teutonet/oci-images/issues/141)) ([5fbb230](https://github.com/teutonet/oci-images/commit/5fbb23087d99e000e930fa47031ce5fe9d4fead9)) +* **deps:** update nginx:1.27.2-alpine docker digest to d44ffb1 ([#136](https://github.com/teutonet/oci-images/issues/136)) ([02b8da2](https://github.com/teutonet/oci-images/commit/02b8da2e4df2474bbda401289f0396e02f4f3e48)) +* **main:** [bot] release masterportal-v3:1.0.0 ([#78](https://github.com/teutonet/oci-images/issues/78)) ([be9bf68](https://github.com/teutonet/oci-images/commit/be9bf68ddef11a48e2431c95c05ddf91cc9debf8)) +* **main:** [bot] release masterportal-v3:2.48.0 ([#101](https://github.com/teutonet/oci-images/issues/101)) ([043870a](https://github.com/teutonet/oci-images/commit/043870a52078cec163cd29b9454ce4373689d975)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* **masterportal:** update masterportal versions ([#146](https://github.com/teutonet/oci-images/issues/146)) ([f75e73d](https://github.com/teutonet/oci-images/commit/f75e73dacff1fd74fe6fde8e7a5bec492d1cc075)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) + +## [3.1.1](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.1.0...masterportal-v3-v2.48.0) (2024-10-09) + + +### Features + +* **masterportal:** add masterportal to oci repo ([#72](https://github.com/teutonet/oci-images/issues/72)) ([88d1d24](https://github.com/teutonet/oci-images/commit/88d1d24d4851db5b874a739324e28b3e90121de8)) + + +### Miscellaneous Chores + +* **deps:** pin nginx docker tag to c04c18a ([#75](https://github.com/teutonet/oci-images/issues/75)) ([aaa2607](https://github.com/teutonet/oci-images/commit/aaa2607ea0f6d36c533b0750046ac838353547a8)) +* **deps:** update nginx docker tag to v1.27.2 ([#113](https://github.com/teutonet/oci-images/issues/113)) ([808dfe7](https://github.com/teutonet/oci-images/commit/808dfe7078bf2ecf46e9db1fe16b78dfc79e9d26)) +* **deps:** update nginx:1.27.1-alpine docker digest to a5127da ([#87](https://github.com/teutonet/oci-images/issues/87)) ([68d3859](https://github.com/teutonet/oci-images/commit/68d385919f78f6f94ed05dbd50b8caa01f223d35)) +* **deps:** update nginx:1.27.2-alpine docker digest to 2140dad ([#114](https://github.com/teutonet/oci-images/issues/114)) ([59d860e](https://github.com/teutonet/oci-images/commit/59d860e2823eadc938f83de79b43c48be70e08c3)) +* **main:** [bot] release masterportal-v3:1.0.0 ([#78](https://github.com/teutonet/oci-images/issues/78)) ([be9bf68](https://github.com/teutonet/oci-images/commit/be9bf68ddef11a48e2431c95c05ddf91cc9debf8)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) + +## [3.1.0](https://github.com/teutonet/oci-images/compare/masterportal-v3-v3.1.0...masterportal-v3-v1.0.0) (2024-09-02) + + +### Features + +* **masterportal:** add masterportal to oci repo ([#72](https://github.com/teutonet/oci-images/issues/72)) ([88d1d24](https://github.com/teutonet/oci-images/commit/88d1d24d4851db5b874a739324e28b3e90121de8)) + + +### Miscellaneous Chores + +* **deps:** pin nginx docker tag to c04c18a ([#75](https://github.com/teutonet/oci-images/issues/75)) ([aaa2607](https://github.com/teutonet/oci-images/commit/aaa2607ea0f6d36c533b0750046ac838353547a8)) +* release 3.1.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) diff --git a/images/masterportal-v3/Dockerfile b/images/masterportal-v3/Dockerfile new file mode 100644 index 00000000..d626f88d --- /dev/null +++ b/images/masterportal-v3/Dockerfile @@ -0,0 +1,27 @@ +FROM nginx:1.29.5-alpine@sha256:1d13701a5f9f3fb01aaa88cef2344d65b6b5bf6b7d9fa4cf0dca557a8d7702ba + +# renovate: datasource=bitbucket-tags depName=geowerkstatt-hamburg/masterportal extractVersion=^v(?3.*)$ +ENV MASTERPORTAL_VERSION=3.19.0 + +# download and restructure Masterportal +RUN curl -fsLw "status %{http_code}, size: %{size_download}" \ + -o /tmp/masterportal.zip \ + https://bitbucket.org/geowerkstatt-hamburg/masterportal/downloads/examples-$MASTERPORTAL_VERSION.zip \ + && unzip -d /tmp/masterportal /tmp/masterportal.zip \ + && rm -v /tmp/masterportal.zip \ + && mv /tmp/masterportal/Basic /usr/share/nginx/html/upstream \ + && mv /tmp/masterportal/mastercode/* /usr/share/nginx/html/upstream/mastercode \ + && rmdir /tmp/masterportal/mastercode /tmp/masterportal \ + && sed -i 's#\.\./mastercode/[^/]*/#./mastercode/#g' /usr/share/nginx/html/upstream/index.html \ + && sed -i '/const Config = {/a \ cesiumLibrary: "https://cesium.com/downloads/cesiumjs/releases/1.95/Build/Cesium/Cesium.js",' /usr/share/nginx/html/upstream/config.js + +# layer git-sync volume over upstream +# rewrite the hard-coded version number in some paths to reduce the necessary changes to overlays for updates +# direct the client to let the server confirm that the cached files are still up to date every time, this should solve the stale cache problems that are exacerbated by the rewrite rule but existed anyway +# this configuration is done as a modification instead of a copied file to pick up new default settings after updates +RUN sed -i 's#location / {#\0 add_header Cache-Control no-cache; rewrite ^/$ /index.html; rewrite ^/mastercode/'`printf %s "$MASTERPORTAL_VERSION" | sed 's/\./_/g'`'/(.*)$ /mastercode/$1; try_files /synced/current/$uri /upstream/$uri =404;#' /etc/nginx/conf.d/default.conf + +# use tmp files and other port to allow running as non-root user as per https://hub.docker.com/_/nginx +RUN sed -i 's#pid .*#pid /tmp/nginx.pid;#' /etc/nginx/nginx.conf \ + && for i in client_body proxy fastcgi uwsgi scgi; do sed -i "s#http {#\\0 ${i}_temp_path /tmp/${i}_temp;#" /etc/nginx/nginx.conf || exit 1; done \ + && sed -i 's#listen \+80#listen 8080#' /etc/nginx/conf.d/default.conf diff --git a/images/qgis-server/CHANGELOG.md b/images/qgis-server/CHANGELOG.md new file mode 100644 index 00000000..8b50db9c --- /dev/null +++ b/images/qgis-server/CHANGELOG.md @@ -0,0 +1,205 @@ +# Changelog + +## [3.22.21](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.20...qgis-server-v3.22.21) (2025-12-05) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to b4aa902 ([#362](https://github.com/teutonet/oci-images/issues/362)) ([508d33d](https://github.com/teutonet/oci-images/commit/508d33d4789b9889aac0a01b6ded1163a058f1b6)) + +## [3.22.20](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.19...qgis-server-v3.22.20) (2025-11-13) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 936abff ([#350](https://github.com/teutonet/oci-images/issues/350)) ([f983e53](https://github.com/teutonet/oci-images/commit/f983e530b6373ba218f0702a73d53d8fb4fc5d90)) + +## [3.22.19](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.18...qgis-server-v3.22.19) (2025-11-04) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 4d9b5b6 ([#345](https://github.com/teutonet/oci-images/issues/345)) ([f116b62](https://github.com/teutonet/oci-images/commit/f116b628db8cc3e14d685af9f8a9ee9bf185304d)) + +## [3.22.18](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.17...qgis-server-v3.22.18) (2025-09-30) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 7e49091 ([#337](https://github.com/teutonet/oci-images/issues/337)) ([e0452cc](https://github.com/teutonet/oci-images/commit/e0452ccb82de733653ebf978083b6ecb4acc8cdd)) + +## [3.22.17](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.16...qgis-server-v3.22.17) (2025-09-17) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to df52e55 ([#331](https://github.com/teutonet/oci-images/issues/331)) ([7ef1367](https://github.com/teutonet/oci-images/commit/7ef13673bd0c8dd419a91c41d4c40f76c50d4194)) + +## [3.22.16](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.15...qgis-server-v3.22.16) (2025-08-29) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to b1a7414 ([#315](https://github.com/teutonet/oci-images/issues/315)) ([3b38836](https://github.com/teutonet/oci-images/commit/3b388369231c8c6ed06928b16522c8ded4fb7aa5)) + +## [3.22.15](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.14...qgis-server-v3.22.15) (2025-07-22) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 2424c18 ([#299](https://github.com/teutonet/oci-images/issues/299)) ([43d043d](https://github.com/teutonet/oci-images/commit/43d043d23788be0ea4c8eab45760c42c6c519b5e)) + +## [3.22.14](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.13...qgis-server-v3.22.14) (2025-07-01) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 6ac2c08 ([#289](https://github.com/teutonet/oci-images/issues/289)) ([e22671f](https://github.com/teutonet/oci-images/commit/e22671f0908ddef23c33b42f808843b2177252f7)) + +## [3.22.13](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.12...qgis-server-v3.22.13) (2025-06-17) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to e5865e6 ([#281](https://github.com/teutonet/oci-images/issues/281)) ([ad820c2](https://github.com/teutonet/oci-images/commit/ad820c236f06698f94cddee5b8db9b8f28bdb8ba)) +* **renovate:** add renovate version update ([#276](https://github.com/teutonet/oci-images/issues/276)) ([bf287ea](https://github.com/teutonet/oci-images/commit/bf287ea8788fa9a2fb36ba2fcae0d18ed938bc63)) + +## [3.22.12](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.11...qgis-server-v3.22.12) (2025-06-02) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 90522ee ([#270](https://github.com/teutonet/oci-images/issues/270)) ([f0b9697](https://github.com/teutonet/oci-images/commit/f0b9697cbd94948082a8907123a922af571e706e)) + +## [3.22.11](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.10...qgis-server-v3.22.11) (2025-04-29) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 4b50eb6 ([#261](https://github.com/teutonet/oci-images/issues/261)) ([11663ea](https://github.com/teutonet/oci-images/commit/11663ea299a013327fd219d68963677b274ae98d)) + +## [3.22.10](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.9...qgis-server-v3.22.10) (2025-04-08) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to b1211f6 ([#248](https://github.com/teutonet/oci-images/issues/248)) ([dd53c3a](https://github.com/teutonet/oci-images/commit/dd53c3a709c28c931f9284818d95600b3b4a65bf)) + +## [3.22.9](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.8...qgis-server-v3.22.9) (2025-03-21) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 1209d8f ([#240](https://github.com/teutonet/oci-images/issues/240)) ([27fa65a](https://github.com/teutonet/oci-images/commit/27fa65a4005d61ee47daa1a3aba32a0efdcbedbd)) + + +## [3.22.8](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.6...qgis-server-v3.22.8) (2025-01-30) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to f70dc8d ([#198](https://github.com/teutonet/oci-images/issues/198)) ([cce84b1](https://github.com/teutonet/oci-images/commit/cce84b18ef0aa1e3f8aca3aad8c5f5d08ea1fd73)) +* **qgis:** support protected qgis server projekts ([#204](https://github.com/teutonet/oci-images/issues/204)) ([936ddce](https://github.com/teutonet/oci-images/commit/936ddce2d5789988fe032cad135601c8134d9f38)) + +## [3.22.6](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.5...qgis-server-v3.22.6) (2025-01-03) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to d365f49 ([#170](https://github.com/teutonet/oci-images/issues/170)) ([7ad548e](https://github.com/teutonet/oci-images/commit/7ad548e5ddb2e024f718d73abd2b9b18904d615e)) + +## [3.22.5](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.4...qgis-server-v3.22.5) (2024-11-13) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 36e591f ([#124](https://github.com/teutonet/oci-images/issues/124)) ([bb76ddd](https://github.com/teutonet/oci-images/commit/bb76ddd9b0fb8b98caecb786901c35f04aacd843)) +* **deps:** update debian:bookworm-slim docker digest to ca3372c ([#135](https://github.com/teutonet/oci-images/issues/135)) ([740ac11](https://github.com/teutonet/oci-images/commit/740ac11fe422523acf6fd64b17cbb955a87d1c4a)) +* **main:** [bot] release qgis-server:3.22.3 ([#111](https://github.com/teutonet/oci-images/issues/111)) ([0f74924](https://github.com/teutonet/oci-images/commit/0f74924dd85adbf6071001cb28f923588370dffe)) +* **main:** [bot] release qgis-server:3.22.3 ([#120](https://github.com/teutonet/oci-images/issues/120)) ([9aaef2b](https://github.com/teutonet/oci-images/commit/9aaef2babb4dc2069f854a130ff74ce6f5a82819)) +* **main:** [bot] release qgis-server:3.22.4 ([#119](https://github.com/teutonet/oci-images/issues/119)) ([d0ae31c](https://github.com/teutonet/oci-images/commit/d0ae31c406fbc6695b8f56c29362dd6bde4c8581)) +* **main:** [bot] release qgis-server:3.22.4 ([#145](https://github.com/teutonet/oci-images/issues/145)) ([94d0b53](https://github.com/teutonet/oci-images/commit/94d0b535ec9477812307b10fb955405bb6f0e202)) + +## [3.22.4](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.3...qgis-server-v3.22.4) (2024-11-13) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to 36e591f ([#124](https://github.com/teutonet/oci-images/issues/124)) ([bb76ddd](https://github.com/teutonet/oci-images/commit/bb76ddd9b0fb8b98caecb786901c35f04aacd843)) +* **deps:** update debian:bookworm-slim docker digest to ad86386 ([#109](https://github.com/teutonet/oci-images/issues/109)) ([0b0323c](https://github.com/teutonet/oci-images/commit/0b0323c1f23e779126dd81c3fe0329e0129c8722)) +* **deps:** update debian:bookworm-slim docker digest to ca3372c ([#135](https://github.com/teutonet/oci-images/issues/135)) ([740ac11](https://github.com/teutonet/oci-images/commit/740ac11fe422523acf6fd64b17cbb955a87d1c4a)) +* **main:** [bot] release qgis-server:3.22.3 ([#111](https://github.com/teutonet/oci-images/issues/111)) ([0f74924](https://github.com/teutonet/oci-images/commit/0f74924dd85adbf6071001cb28f923588370dffe)) +* **main:** [bot] release qgis-server:3.22.3 ([#120](https://github.com/teutonet/oci-images/issues/120)) ([9aaef2b](https://github.com/teutonet/oci-images/commit/9aaef2babb4dc2069f854a130ff74ce6f5a82819)) +* **main:** [bot] release qgis-server:3.22.4 ([#108](https://github.com/teutonet/oci-images/issues/108)) ([2213db8](https://github.com/teutonet/oci-images/commit/2213db8443b8ca47fce0c4e5283b2a7aadca64c8)) +* **main:** [bot] release qgis-server:3.22.4 ([#119](https://github.com/teutonet/oci-images/issues/119)) ([d0ae31c](https://github.com/teutonet/oci-images/commit/d0ae31c406fbc6695b8f56c29362dd6bde4c8581)) + +## [3.22.3](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.5...qgis-server-v3.22.3) (2024-11-13) + + +### Features + +* **qgis-server:** add qgis server ([#83](https://github.com/teutonet/oci-images/issues/83)) ([19cddf7](https://github.com/teutonet/oci-images/commit/19cddf7d4db1e9cd3293340fc75b9a12b0c7b570)) + + +### Miscellaneous Chores + +* **deps:** pin debian docker tag to a629e79 ([#103](https://github.com/teutonet/oci-images/issues/103)) ([faa5347](https://github.com/teutonet/oci-images/commit/faa5347fff25f2447ea0dc1a0f57859271a213ce)) +* **deps:** update debian:bookworm-slim docker digest to 36e591f ([#124](https://github.com/teutonet/oci-images/issues/124)) ([bb76ddd](https://github.com/teutonet/oci-images/commit/bb76ddd9b0fb8b98caecb786901c35f04aacd843)) +* **deps:** update debian:bookworm-slim docker digest to 7d7629a ([#106](https://github.com/teutonet/oci-images/issues/106)) ([35a37fb](https://github.com/teutonet/oci-images/commit/35a37fbca005cb431428421140b745c44fb3470c)) +* **deps:** update debian:bookworm-slim docker digest to ad86386 ([#109](https://github.com/teutonet/oci-images/issues/109)) ([0b0323c](https://github.com/teutonet/oci-images/commit/0b0323c1f23e779126dd81c3fe0329e0129c8722)) +* **deps:** update debian:bookworm-slim docker digest to ca3372c ([#135](https://github.com/teutonet/oci-images/issues/135)) ([740ac11](https://github.com/teutonet/oci-images/commit/740ac11fe422523acf6fd64b17cbb955a87d1c4a)) +* **main:** [bot] release qgis-server:3.22.3 ([#107](https://github.com/teutonet/oci-images/issues/107)) ([65eb902](https://github.com/teutonet/oci-images/commit/65eb902d85e9aa62d0b1799910e10c7d17a848d2)) +* **main:** [bot] release qgis-server:3.22.3 ([#111](https://github.com/teutonet/oci-images/issues/111)) ([0f74924](https://github.com/teutonet/oci-images/commit/0f74924dd85adbf6071001cb28f923588370dffe)) +* **main:** [bot] release qgis-server:3.22.4 ([#108](https://github.com/teutonet/oci-images/issues/108)) ([2213db8](https://github.com/teutonet/oci-images/commit/2213db8443b8ca47fce0c4e5283b2a7aadca64c8)) +* **main:** [bot] release qgis-server:3.22.4 ([#119](https://github.com/teutonet/oci-images/issues/119)) ([d0ae31c](https://github.com/teutonet/oci-images/commit/d0ae31c406fbc6695b8f56c29362dd6bde4c8581)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) + +## [3.22.4](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.3...qgis-server-v3.22.4) (2024-10-09) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to ad86386 ([#109](https://github.com/teutonet/oci-images/issues/109)) ([0b0323c](https://github.com/teutonet/oci-images/commit/0b0323c1f23e779126dd81c3fe0329e0129c8722)) +* **main:** [bot] release qgis-server:3.22.3 ([#111](https://github.com/teutonet/oci-images/issues/111)) ([0f74924](https://github.com/teutonet/oci-images/commit/0f74924dd85adbf6071001cb28f923588370dffe)) +* **main:** [bot] release qgis-server:3.22.4 ([#108](https://github.com/teutonet/oci-images/issues/108)) ([2213db8](https://github.com/teutonet/oci-images/commit/2213db8443b8ca47fce0c4e5283b2a7aadca64c8)) + +## [3.22.3](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.4...qgis-server-v3.22.3) (2024-09-30) + + +### Features + +* **qgis-server:** add qgis server ([#83](https://github.com/teutonet/oci-images/issues/83)) ([19cddf7](https://github.com/teutonet/oci-images/commit/19cddf7d4db1e9cd3293340fc75b9a12b0c7b570)) + + +### Miscellaneous Chores + +* **deps:** pin debian docker tag to a629e79 ([#103](https://github.com/teutonet/oci-images/issues/103)) ([faa5347](https://github.com/teutonet/oci-images/commit/faa5347fff25f2447ea0dc1a0f57859271a213ce)) +* **deps:** update debian:bookworm-slim docker digest to 7d7629a ([#106](https://github.com/teutonet/oci-images/issues/106)) ([35a37fb](https://github.com/teutonet/oci-images/commit/35a37fbca005cb431428421140b745c44fb3470c)) +* **deps:** update debian:bookworm-slim docker digest to ad86386 ([#109](https://github.com/teutonet/oci-images/issues/109)) ([0b0323c](https://github.com/teutonet/oci-images/commit/0b0323c1f23e779126dd81c3fe0329e0129c8722)) +* **main:** [bot] release qgis-server:3.22.3 ([#107](https://github.com/teutonet/oci-images/issues/107)) ([65eb902](https://github.com/teutonet/oci-images/commit/65eb902d85e9aa62d0b1799910e10c7d17a848d2)) +* **main:** [bot] release qgis-server:3.22.4 ([#108](https://github.com/teutonet/oci-images/issues/108)) ([2213db8](https://github.com/teutonet/oci-images/commit/2213db8443b8ca47fce0c4e5283b2a7aadca64c8)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) + +## [3.22.4](https://github.com/teutonet/oci-images/compare/qgis-server-v3.22.3...qgis-server-v3.22.4) (2024-09-30) + + +### Miscellaneous Chores + +* **deps:** update debian:bookworm-slim docker digest to ad86386 ([#109](https://github.com/teutonet/oci-images/issues/109)) ([0b0323c](https://github.com/teutonet/oci-images/commit/0b0323c1f23e779126dd81c3fe0329e0129c8722)) + +## [3.22.3](https://github.com/teutonet/oci-images/compare/qgis-server-v3.38.3...qgis-server-v3.22.3) (2024-09-27) + + +### Features + +* **qgis-server:** add qgis server ([#83](https://github.com/teutonet/oci-images/issues/83)) ([19cddf7](https://github.com/teutonet/oci-images/commit/19cddf7d4db1e9cd3293340fc75b9a12b0c7b570)) + + +### Miscellaneous Chores + +* **deps:** pin debian docker tag to a629e79 ([#103](https://github.com/teutonet/oci-images/issues/103)) ([faa5347](https://github.com/teutonet/oci-images/commit/faa5347fff25f2447ea0dc1a0f57859271a213ce)) +* **deps:** update debian:bookworm-slim docker digest to 7d7629a ([#106](https://github.com/teutonet/oci-images/issues/106)) ([35a37fb](https://github.com/teutonet/oci-images/commit/35a37fbca005cb431428421140b745c44fb3470c)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) diff --git a/images/qgis-server/Dockerfile b/images/qgis-server/Dockerfile new file mode 100644 index 00000000..9204a6e7 --- /dev/null +++ b/images/qgis-server/Dockerfile @@ -0,0 +1,53 @@ +FROM debian:bookworm-slim@sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421 + +ENV LANG=en_EN.UTF-8 + +# renovate: datasource=github-tags depName=krallin/tini +ENV TINI_VERSION=v0.19.0 + +RUN apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + gnupg \ + ca-certificates \ + wget \ + locales \ + crudini \ + && localedef -i en_US -f UTF-8 en_US.UTF-8 \ + # Add the current key for package downloading + # Please refer to QGIS install documentation (https://www.qgis.org/fr/site/forusers/alldownloads.html#debian-ubuntu) + && mkdir -m755 -p /etc/apt/keyrings \ + && wget -O /etc/apt/keyrings/qgis-archive-keyring.gpg https://download.qgis.org/downloads/qgis-archive-keyring.gpg \ + # Add repository for latest version of qgis-server + # Please refer to QGIS repositories documentation if you want other version (https://qgis.org/en/site/forusers/alldownloads.html#repositories) + && echo "deb [signed-by=/etc/apt/keyrings/qgis-archive-keyring.gpg] https://qgis.org/debian bookworm main" | tee /etc/apt/sources.list.d/qgis.list \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + qgis-server \ + spawn-fcgi \ + xauth \ + xvfb \ + && wget -O /tini https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini \ + && chmod +x /tini \ + && apt-get remove --purge -y \ + gnupg \ + wget \ + && rm -rf /var/lib/apt/lists/* + +RUN useradd -m qgis + +ENV QGIS_PREFIX_PATH=/usr +ENV QGIS_SERVER_LOG_STDERR=1 +ENV QGIS_SERVER_LOG_LEVEL=2 +ENV QGIS_PLUGINPATH=/plugins + +COPY validmap/ /plugins/validmap/ + +COPY cmd.sh /home/qgis/cmd.sh +RUN mkdir /etc/postgresql-common/ && chmod 777 /etc/postgresql-common/ + +USER qgis +WORKDIR /home/qgis + +ENTRYPOINT ["/tini", "--"] + +CMD ["/home/qgis/cmd.sh"] diff --git a/images/qgis-server/cmd.sh b/images/qgis-server/cmd.sh new file mode 100755 index 00000000..11457e09 --- /dev/null +++ b/images/qgis-server/cmd.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -eu -o pipefail + +# distribution-specific +PGSERVICE_FILE=/etc/postgresql-common/pg_service.conf + +# simple configuration / built-in database +for i in host user password dbname +do + envvar=MAIN_SERVICE_${i^^} + crudini --set $PGSERVICE_FILE main-service $i "${!envvar}" +done + +# overrides / further services +for var in VALUES SECRET +do + envvar=PGSERVICE_$var + if [[ -v $envvar ]] + then + crudini --merge $PGSERVICE_FILE <<<${!envvar} + fi +done + +# until https://github.com/pixelb/crudini/commit/65ace170964aa75f36bfeb18cadd995dcd332622 is available +sed 's/ = /=/' -i $PGSERVICE_FILE + +exec /usr/bin/xvfb-run --auto-servernum --server-num=1 /usr/bin/spawn-fcgi -p 5555 -n -d /home/qgis -- /usr/lib/cgi-bin/qgis_mapserv.fcgi diff --git a/images/qgis-server/validmap/__init__.py b/images/qgis-server/validmap/__init__.py new file mode 100644 index 00000000..e4f8ffc3 --- /dev/null +++ b/images/qgis-server/validmap/__init__.py @@ -0,0 +1,44 @@ +from qgis.server import QgsServerFilter +import re +import os + +PARAMETER = "MAP" +SUFFIX = ".qgs" +VALID_PATTERN = r"[-_a-z0-9]+" + +PREFIX_DEFAULT = os.environ.get("PROJECT_PREFIX", "") +PREFIX_SECURE = os.environ.get("SECURED_PROJECT_PREFIX" , "") + + +class ValidmapFilter(QgsServerFilter): + def __init__(self, serverIface): + super().__init__(serverIface) + serverIface.registerFilter(self, 100) + + def onRequestReady(self) -> bool: + req = self.serverInterface().requestHandler() + host = self.serverInterface().getEnv("SERVER_NAME") + project_file = req.parameterMap().get(PARAMETER, "") + + if re.match(r"^qgis\..*", host): + if re.fullmatch(VALID_PATTERN, project_file): + # use good value with prefix and suffix + req.setParameter(PARAMETER, + f"{PREFIX_DEFAULT}{project_file}/{project_file}{SUFFIX}") + else: + # reject bad value by removing it + req.removeParameter(PARAMETER) + + elif re.match(r"^qgis-secure\..*", host): + if re.fullmatch(VALID_PATTERN, project_file): + req.setParameter(PARAMETER, + f"{PREFIX_SECURE}{project_file}/{project_file}{SUFFIX}") + else: + # reject bad value by removing it + req.removeParameter(PARAMETER) + + return True + + +def serverClassFactory(serverIface): + return ValidmapFilter(serverIface) diff --git a/images/qgis-server/validmap/metadata.txt b/images/qgis-server/validmap/metadata.txt new file mode 100644 index 00000000..c28574f0 --- /dev/null +++ b/images/qgis-server/validmap/metadata.txt @@ -0,0 +1,10 @@ +[general] +name=validmap +server=True +description=Ensure that the MAP parameter is restricted to safe values. +about=This QGIS server plugin ensures that the MAP=... parameter always matches `[-_a-z0-9]+`, suffixes it with `.qgs` and prefixes it with PROJECT_PREFIX and the value itself as a directory name. Invalid values are removed to mitigate malicious requests. +repository=https://gitlab.com/urban-data-hub/gdi +qgisMinimumVersion=3 +version=0.0.1 +author=git +email=git@example.com diff --git a/images/solr-ckan/CHANGELOG.md b/images/solr-ckan/CHANGELOG.md new file mode 100644 index 00000000..20ff70f5 --- /dev/null +++ b/images/solr-ckan/CHANGELOG.md @@ -0,0 +1,219 @@ +# Changelog + +## [1.0.29](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.28...solr-ckan-v1.0.29) (2025-07-25) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 7a7d839 ([#301](https://github.com/teutonet/oci-images/issues/301)) ([f6801d4](https://github.com/teutonet/oci-images/commit/f6801d4a90920da73987de5f3dc77d6763801ca3)) + +## [1.0.28](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.27...solr-ckan-v1.0.28) (2025-07-22) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 23a1437 ([#297](https://github.com/teutonet/oci-images/issues/297)) ([4446c93](https://github.com/teutonet/oci-images/commit/4446c93b60e4efbabc116248418882d8ee0ed03c)) + +## [1.0.27](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.26...solr-ckan-v1.0.27) (2025-06-20) + + +### Miscellaneous Chores + +* **renovate:** update solr schema version ([#284](https://github.com/teutonet/oci-images/issues/284)) ([d68e476](https://github.com/teutonet/oci-images/commit/d68e47677e49b87c086874a9a7e0ccc72a65e251)) + +## [1.0.26](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.25...solr-ckan-v1.0.26) (2025-06-02) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 32c0da3 ([#269](https://github.com/teutonet/oci-images/issues/269)) ([327eae3](https://github.com/teutonet/oci-images/commit/327eae398cd06e80d7169df542d24ef2af4c0a49)) +* **deps:** update bitnami/solr:9 docker digest to ff91cc3 ([#271](https://github.com/teutonet/oci-images/issues/271)) ([b4c4e5a](https://github.com/teutonet/oci-images/commit/b4c4e5a34c38e6b463e3634a8ba89ba21c7cc9af)) + +## [1.0.25](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.24...solr-ckan-v1.0.25) (2025-05-15) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 6270eea ([#267](https://github.com/teutonet/oci-images/issues/267)) ([ea2d3ed](https://github.com/teutonet/oci-images/commit/ea2d3ed79aa8086de737e6553c4b8c2554de837a)) + +## [1.0.24](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.23...solr-ckan-v1.0.24) (2025-04-15) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 5342101 ([#250](https://github.com/teutonet/oci-images/issues/250)) ([e7be28e](https://github.com/teutonet/oci-images/commit/e7be28e61f1cd060c0d2b7a5bbc357bfd30a8c70)) + +## [1.0.23](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.22...solr-ckan-v1.0.23) (2025-04-08) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to f2f34bf ([#247](https://github.com/teutonet/oci-images/issues/247)) ([1aca0e7](https://github.com/teutonet/oci-images/commit/1aca0e7c63517e29cfbd4683c27db5ec2fb7a641)) + +## [1.0.22](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.21...solr-ckan-v1.0.22) (2025-04-07) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 62122ce ([#245](https://github.com/teutonet/oci-images/issues/245)) ([4a0d47d](https://github.com/teutonet/oci-images/commit/4a0d47d499e665c37159c869218989d386f8fec0)) + +## [1.0.21](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.20...solr-ckan-v1.0.21) (2025-03-21) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to b6018d0 ([#239](https://github.com/teutonet/oci-images/issues/239)) ([fbcb664](https://github.com/teutonet/oci-images/commit/fbcb664a60c6d555acbf0d6349e434744a1395c3)) + +## [1.0.20](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.19...solr-ckan-v1.0.20) (2025-03-12) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 5003ddb ([#237](https://github.com/teutonet/oci-images/issues/237)) ([3f1bca5](https://github.com/teutonet/oci-images/commit/3f1bca52760daa0e6347bcc66bb6eb2ee139c6f8)) + +## [1.0.19](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.18...solr-ckan-v1.0.19) (2025-02-21) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 34c571e ([#223](https://github.com/teutonet/oci-images/issues/223)) ([0514d04](https://github.com/teutonet/oci-images/commit/0514d04ec0f272d772210fc5bc88963e26cfc12e)) +* **deps:** update bitnami/solr:9 docker digest to 4d408aa ([#222](https://github.com/teutonet/oci-images/issues/222)) ([d5b1e37](https://github.com/teutonet/oci-images/commit/d5b1e37d08757614bf0ac51ef4d3fce973da447e)) + +## [1.0.18](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.17...solr-ckan-v1.0.18) (2025-02-19) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 4be4377 ([#219](https://github.com/teutonet/oci-images/issues/219)) ([218cbf8](https://github.com/teutonet/oci-images/commit/218cbf88965d80f2bc10d3d7f4ceb77e8f7c0ddd)) + +## [1.0.17](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.16...solr-ckan-v1.0.17) (2025-02-12) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 9c0218e ([#215](https://github.com/teutonet/oci-images/issues/215)) ([93ae3b1](https://github.com/teutonet/oci-images/commit/93ae3b1eb8c24669051245801fcd4b0f22301111)) + +## [1.0.16](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.15...solr-ckan-v1.0.16) (2025-01-30) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 1f14781 ([#202](https://github.com/teutonet/oci-images/issues/202)) ([483af84](https://github.com/teutonet/oci-images/commit/483af84b3d3e646b0a9d3ddb10c0f6f032de3db4)) + +## [1.0.15](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.14...solr-ckan-v1.0.15) (2025-01-15) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to b8ea7fc ([#195](https://github.com/teutonet/oci-images/issues/195)) ([fc057ae](https://github.com/teutonet/oci-images/commit/fc057ae50e1e29233e6cc725611978a82936c070)) + +## [1.0.14](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.13...solr-ckan-v1.0.14) (2025-01-03) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 393ac82 ([#178](https://github.com/teutonet/oci-images/issues/178)) ([0ead724](https://github.com/teutonet/oci-images/commit/0ead724ce9629c4c2174f7613eb46addecfc58fe)) + +## [1.0.13](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.12...solr-ckan-v1.0.13) (2024-11-13) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 6b30486 ([#133](https://github.com/teutonet/oci-images/issues/133)) ([707f802](https://github.com/teutonet/oci-images/commit/707f802fa4b79a4a69de75a4c08e93c1c0d8b28a)) + +## [1.0.12](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.11...solr-ckan-v1.0.12) (2024-10-25) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 619236b ([#130](https://github.com/teutonet/oci-images/issues/130)) ([057a3c6](https://github.com/teutonet/oci-images/commit/057a3c650d041dc17c7f7135193cba9882eebc2f)) + +## [1.0.11](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.10...solr-ckan-v1.0.11) (2024-10-18) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to decfb91 ([#123](https://github.com/teutonet/oci-images/issues/123)) ([438eaad](https://github.com/teutonet/oci-images/commit/438eaadc00c35d84f88fd5d50aca8001f515896d)) + +## [1.0.10](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.9...solr-ckan-v2.48.0) (2024-09-26) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to ca0ddbf ([#85](https://github.com/teutonet/oci-images/issues/85)) ([215af52](https://github.com/teutonet/oci-images/commit/215af52387afb7586e843881d02ad92c38d171b4)) + +## [1.0.9](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.8...solr-ckan-v1.0.9) (2024-09-02) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to fe93b1b ([#76](https://github.com/teutonet/oci-images/issues/76)) ([59331fa](https://github.com/teutonet/oci-images/commit/59331fac5295f2a994dea630f7c5a9a6d313e9c8)) + +## [1.0.8](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.7...solr-ckan-v1.0.8) (2024-08-24) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to c6449d2 ([#67](https://github.com/teutonet/oci-images/issues/67)) ([40dc0c6](https://github.com/teutonet/oci-images/commit/40dc0c6d1730f9aa2f84b42253deb82632484516)) + +## [1.0.7](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.6...solr-ckan-v1.0.7) (2024-08-15) + + +### Bug Fixes + +* **solr-ckan:** update build to work with cloud mode ([#61](https://github.com/teutonet/oci-images/issues/61)) ([b5ef942](https://github.com/teutonet/oci-images/commit/b5ef94289965df3e3fcf97af23b2029fa7aeda2c)) + +## [1.0.6](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.5...solr-ckan-v1.0.6) (2024-07-25) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 129d7ca ([#55](https://github.com/teutonet/oci-images/issues/55)) ([615ad73](https://github.com/teutonet/oci-images/commit/615ad73a0ccd72235bbe322c1e0cd26f4afeb9b1)) + +## [1.0.5](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.4...solr-ckan-v1.0.5) (2024-07-25) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 33dac02 ([#53](https://github.com/teutonet/oci-images/issues/53)) ([5c6079b](https://github.com/teutonet/oci-images/commit/5c6079b1c9a3d9058fd695ccf5a6630d19bd122e)) + +## [1.0.4](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.3...solr-ckan-v1.0.4) (2024-07-06) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 46e3781 ([#45](https://github.com/teutonet/oci-images/issues/45)) ([dad0dab](https://github.com/teutonet/oci-images/commit/dad0dabf82658c235342b3ceadea8a8eaa837596)) + +## [1.0.3](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.2...solr-ckan-v1.0.3) (2024-06-30) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 8381696 ([585c094](https://github.com/teutonet/oci-images/commit/585c094add164a8237a84fb2a0eb742fe9231c6f)) + +## [1.0.2](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.1...solr-ckan-v1.0.2) (2024-06-29) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 1189ee1 ([2ba2f8d](https://github.com/teutonet/oci-images/commit/2ba2f8db5350e88fd9989df043b2df2d5425561c)) + +## [1.0.1](https://github.com/teutonet/oci-images/compare/solr-ckan-v1.0.0...solr-ckan-v1.0.1) (2024-05-30) + + +### Miscellaneous Chores + +* **deps:** update bitnami/solr:9 docker digest to 3708367 ([dc9bdec](https://github.com/teutonet/oci-images/commit/dc9bdececf67b6210e39add3f4af219dc35bbbe1)) + +## [1.0.0](https://github.com/teutonet/oci-images/compare/solr-ckan-v0.1.0...solr-ckan-v1.0.0) (2024-05-29) + + +### Features + +* **ci:** initial repo setup ([8009c05](https://github.com/teutonet/oci-images/commit/8009c050a2ef05c2d1dd5c6406f6499064442b46)) + + +### Miscellaneous Chores + +* **deps:** pin dependencies ([#1](https://github.com/teutonet/oci-images/issues/1)) ([98fee24](https://github.com/teutonet/oci-images/commit/98fee2463e2464390affc4c52c3dbe95151ff5f6)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) diff --git a/images/solr-ckan/Dockerfile b/images/solr-ckan/Dockerfile index fcd5cf14..9b77f39d 100644 --- a/images/solr-ckan/Dockerfile +++ b/images/solr-ckan/Dockerfile @@ -1,18 +1,16 @@ -FROM bitnami/solr:9 +FROM bitnami/solr:9@sha256:7a7d839c2361c4fead4c60a6fea2d8c2bdd0dc3e81012541c997e2ac3c87c470 EXPOSE 8983 -ARG CKAN_BRANCH="ckan-2.10.4" +# renovate: datasource=github-tags depName=ckan/ckan extractVersion=^ckan-(?.*)$ +ARG CKAN_TAG="2.11.3" ENV SOLR_CONFIG_DIR="/opt/bitnami/solr/server/solr/configsets" -ENV SOLR_SCHEMA_FILE="$SOLR_CONFIG_DIR/ckan/conf/managed-schema" +ENV SOLR_SCHEMA_FILE="$SOLR_CONFIG_DIR/_default/conf/managed-schema" USER root -# Create a CKAN configset by copying the default one -RUN cp -R $SOLR_CONFIG_DIR/_default $SOLR_CONFIG_DIR/ckan - -# Update the schema -ADD --chmod=644 https://raw.githubusercontent.com/ckan/ckan/$CKAN_BRANCH/ckan/config/solr/schema.xml $SOLR_SCHEMA_FILE +# Add CKAN schema +ADD --chmod=644 https://raw.githubusercontent.com/ckan/ckan/ckan-${CKAN_TAG}/ckan/config/solr/schema.xml $SOLR_SCHEMA_FILE USER 1001 diff --git a/images/spilo/CHANGELOG.md b/images/spilo/CHANGELOG.md new file mode 100644 index 00000000..8e875dca --- /dev/null +++ b/images/spilo/CHANGELOG.md @@ -0,0 +1,44 @@ +# Changelog + +## [16.0.1](https://github.com/teutonet/oci-images/compare/spilo-v16.0.0...spilo-v16.0.1) (2025-01-13) + + +### Miscellaneous Chores + +* **deps:** update spilo image to 3.3-p3 ([#196](https://github.com/teutonet/oci-images/issues/196)) ([e5bb239](https://github.com/teutonet/oci-images/commit/e5bb2390f09dbf42358038871182d4fa9f1e3e1b)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) + +## [16.0.0](https://github.com/teutonet/oci-images/compare/spilo-v15.0.1...spilo-v16.0.0) (2024-08-26) + + +### ⚠ BREAKING CHANGES + +* **spilo:** update spilo base image ([#70](https://github.com/teutonet/oci-images/issues/70)) + +### Features + +* **spilo:** update spilo base image ([#70](https://github.com/teutonet/oci-images/issues/70)) ([8706bba](https://github.com/teutonet/oci-images/commit/8706bba110b7b5cefee4045c29a246829d4e7a42)) + +## [15.0.1](https://github.com/teutonet/oci-images/compare/spilo-v15.0.0...spilo-v15.0.1) (2024-06-13) + + +### Miscellaneous Chores + +* **deps:** update ghcr.io/zalando/spilo-15 docker tag to v3.2 ([61780b7](https://github.com/teutonet/oci-images/commit/61780b72000aff01130d95c228974a19a7889380)) + +## [15.0.0](https://github.com/teutonet/oci-images/compare/spilo-v14.0.0...spilo-v15.0.0) (2024-06-13) + + +### ⚠ BREAKING CHANGES + +* add spilo image ([#16](https://github.com/teutonet/oci-images/issues/16)) + +### Features + +* add spilo image ([#16](https://github.com/teutonet/oci-images/issues/16)) ([3cc81c4](https://github.com/teutonet/oci-images/commit/3cc81c4e814d30b083a6a8e23cf9d843dd34efc3)) +* **spilo:** set version ([#20](https://github.com/teutonet/oci-images/issues/20)) ([a25e277](https://github.com/teutonet/oci-images/commit/a25e2773c501ae907d45545edb7527d6b69c1853)) + + +### Miscellaneous Chores + +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) diff --git a/images/spilo/Dockerfile b/images/spilo/Dockerfile new file mode 100644 index 00000000..48f4af5f --- /dev/null +++ b/images/spilo/Dockerfile @@ -0,0 +1,69 @@ +ARG OLD_PGVERSION=15 +ARG PGVERSION=16 + +FROM ghcr.io/zalando/spilo-16:3.3-p3@sha256:0a59aa400727c0a6fac9635f17b09aece9a7ae5e58f0979b1bb0b7e30fb82665 AS extension-builder +# Build process requires installed postgres + +ARG OLD_PGVERSION +ARG PGVERSION + +ENV USE_PGXS=1 + +# git make clang llvm +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + build-essential unzip wget \ + postgresql-server-dev-${PGVERSION} postgresql-server-dev-${OLD_PGVERSION} libpq-dev clang-14 llvm-14 + +# IBAN validation +WORKDIR /iban +# fixed to latest commit on https://github.com/ol-teuto/PostgreSQL-IBAN/tree/refactor +# update git commit id here when that branch is updated +ARG POSTGRESQL_IBAN_VERSION=c836207bca039484f49328331a8e3c4876fbb4e6 + +RUN curl -sfLo iban.zip https://github.com/yorickdewid/PostgreSQL-IBAN/archive/${POSTGRESQL_IBAN_VERSION}.zip && \ + unzip iban.zip +RUN cd /iban/PostgreSQL-IBAN-${POSTGRESQL_IBAN_VERSION} && \ + make PG_CONFIG=/usr/lib/postgresql/${PGVERSION}/bin/pg_config clean all install && \ + make PG_CONFIG=/usr/lib/postgresql/${OLD_PGVERSION}/bin/pg_config clean all install + +# renovate: datasource=github-tags depName=pgMemento/pgMemento extractVersion=^v(?.*)$ +ARG PGMEMENTO_VERSION=0.7.4 + +WORKDIR /pgmemento +RUN curl -sfLo pgmemento.zip https://github.com/pgMemento/pgMemento/releases/download/v${PGMEMENTO_VERSION}/pgmemento-${PGMEMENTO_VERSION}.zip && \ + unzip pgmemento.zip && \ + cd /pgmemento/pgmemento-${PGMEMENTO_VERSION} && \ + make && \ + make install + +# json-schema validation +RUN mkdir -p /usr/local/share/postgres/extensions +# This repository does not have tags, so use a specific commit instead +RUN wget -O /usr/local/share/postgres/extensions/postgres-json-schema--0.1.1.sql https://raw.githubusercontent.com/gavinwahl/postgres-json-schema/570e19f5b2b4e6ff1414eebe2191e14c437760d9/postgres-json-schema--0.1.1.sql +RUN wget -O /usr/local/share/postgres/extensions/postgres-json-schema.control https://raw.githubusercontent.com/gavinwahl/postgres-json-schema/570e19f5b2b4e6ff1414eebe2191e14c437760d9/postgres-json-schema.control + +FROM ghcr.io/zalando/spilo-16:3.3-p3@sha256:0a59aa400727c0a6fac9635f17b09aece9a7ae5e58f0979b1bb0b7e30fb82665 AS final +# Setup final image with extensions + +ARG PGVERSION +ARG OLD_PGVERSION + +# json-schema validation +COPY --from=extension-builder /usr/local/share/postgres/extensions/postgres-json-schema* /usr/share/postgresql/${OLD_PGVERSION}/extension/ +COPY --from=extension-builder /usr/local/share/postgres/extensions/postgres-json-schema* /usr/share/postgresql/${PGVERSION}/extension/ + +# pgmemento (audit trail) +COPY --from=extension-builder /usr/share/postgresql/${PGVERSION}/extension/pgmemento* /usr/share/postgresql/${OLD_PGVERSION}/extension/ +COPY --from=extension-builder /usr/share/postgresql/${PGVERSION}/extension/pgmemento* /usr/share/postgresql/${PGVERSION}/extension/ + +# iban +COPY --from=extension-builder /usr/share/postgresql/${OLD_PGVERSION}/extension/iban* /usr/share/postgresql/${OLD_PGVERSION}/extension/ +COPY --from=extension-builder /usr/lib/postgresql/${OLD_PGVERSION}/lib/iban.so /usr/lib/postgresql/${OLD_PGVERSION}/lib/iban.so +COPY --from=extension-builder /usr/lib/postgresql/${OLD_PGVERSION}/lib/bitcode/iban.index.bc /usr/lib/postgresql/${OLD_PGVERSION}/lib/bitcode/iban.index.bc +COPY --from=extension-builder /usr/lib/postgresql/${OLD_PGVERSION}/lib/bitcode/iban/ /usr/lib/postgresql/${OLD_PGVERSION}/lib/bitcode/iban/ +COPY --from=extension-builder /usr/share/postgresql/${PGVERSION}/extension/iban* /usr/share/postgresql/${PGVERSION}/extension/ +COPY --from=extension-builder /usr/lib/postgresql/${PGVERSION}/lib/iban.so /usr/lib/postgresql/${PGVERSION}/lib/iban.so +COPY --from=extension-builder /usr/lib/postgresql/${PGVERSION}/lib/bitcode/iban.index.bc /usr/lib/postgresql/${PGVERSION}/lib/bitcode/iban.index.bc +COPY --from=extension-builder /usr/lib/postgresql/${PGVERSION}/lib/bitcode/iban/ /usr/lib/postgresql/${PGVERSION}/lib/bitcode/iban/ diff --git a/images/teuto-course/CHANGELOG.md b/images/teuto-course/CHANGELOG.md new file mode 100644 index 00000000..836b8e56 --- /dev/null +++ b/images/teuto-course/CHANGELOG.md @@ -0,0 +1,57 @@ +# Changelog + +## [2.49.1](https://github.com/teutonet/oci-images/compare/teuto-course-v2.49.0...teuto-course-v2.49.1) (2025-09-18) + + +### Miscellaneous Chores + +* **deps:** pin archlinux docker tag to 31c2103 ([#316](https://github.com/teutonet/oci-images/issues/316)) ([bc7d32d](https://github.com/teutonet/oci-images/commit/bc7d32d651b80519bc351cf0df66a0a400091582)) + +## [2.49.0](https://github.com/teutonet/oci-images/compare/teuto-course-v2.48.0...teuto-course-v2.49.0) (2025-08-13) + + +### Features + +* trigger build ([#322](https://github.com/teutonet/oci-images/issues/322)) ([44e7bf4](https://github.com/teutonet/oci-images/commit/44e7bf4f96ea8a1835e46baabb84903d776a5ec8)) + + +### Miscellaneous Chores + +* **main:** [bot] release teuto-course:1.0.1 ([#320](https://github.com/teutonet/oci-images/issues/320)) ([6b7c096](https://github.com/teutonet/oci-images/commit/6b7c0963ddd9a45967135ebfcbaecf351e047f6c)) +* **main:** [bot] release teuto-course:2.48.0 ([#323](https://github.com/teutonet/oci-images/issues/323)) ([d913611](https://github.com/teutonet/oci-images/commit/d9136110a9aa70ab5c9fe8981691acfef558f369)) + +## [2.48.0](https://github.com/teutonet/oci-images/compare/teuto-course-v1.0.1...teuto-course-v2.48.0) (2025-08-13) + + +### Features + +* **teuto-cours:** add image for teutonet k8s courses ([#314](https://github.com/teutonet/oci-images/issues/314)) ([569fb9c](https://github.com/teutonet/oci-images/commit/569fb9c64fae1d4bfd056ca4971b5da54c1c92e4)) +* trigger build ([#322](https://github.com/teutonet/oci-images/issues/322)) ([44e7bf4](https://github.com/teutonet/oci-images/commit/44e7bf4f96ea8a1835e46baabb84903d776a5ec8)) + + +### Miscellaneous Chores + +* **main:** [bot] release teuto-course:1.0.1 ([#320](https://github.com/teutonet/oci-images/issues/320)) ([6b7c096](https://github.com/teutonet/oci-images/commit/6b7c0963ddd9a45967135ebfcbaecf351e047f6c)) +* **main:** [bot] release teuto-course:2.48.0 ([#319](https://github.com/teutonet/oci-images/issues/319)) ([35a3972](https://github.com/teutonet/oci-images/commit/35a3972bd0057d5c8b96ffae7fd69c1d52005414)) +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) + +## [1.0.1](https://github.com/teutonet/oci-images/compare/teuto-course-v1.0.0...teuto-course-v1.0.1) (2025-08-13) + + +### Features + +* trigger build ([#322](https://github.com/teutonet/oci-images/issues/322)) ([44e7bf4](https://github.com/teutonet/oci-images/commit/44e7bf4f96ea8a1835e46baabb84903d776a5ec8)) + +## 1.0.0 (2025-08-13) + + +### Features + +* **teuto-cours:** add image for teutonet k8s courses ([#314](https://github.com/teutonet/oci-images/issues/314)) ([569fb9c](https://github.com/teutonet/oci-images/commit/569fb9c64fae1d4bfd056ca4971b5da54c1c92e4)) + + +### Miscellaneous Chores + +* **main:** Set relese version ([#82](https://github.com/teutonet/oci-images/issues/82)) ([507ad38](https://github.com/teutonet/oci-images/commit/507ad38b081e0d8b5c0e4e2206c9b751cc141001)) +* release 1.0.0 ([6be7255](https://github.com/teutonet/oci-images/commit/6be725545d58cb559c435c759af1f25b69743186)) diff --git a/images/teuto-course/Dockerfile b/images/teuto-course/Dockerfile new file mode 100644 index 00000000..ab708f8e --- /dev/null +++ b/images/teuto-course/Dockerfile @@ -0,0 +1,50 @@ +FROM archlinux:multilib-devel@sha256:c52936673f184d8c3bdcebd4fc6d5403514bc18e175d26fa7c3793b72cbb1d6d +LABEL MAINTAINER="teuto.net" +LABEL version="1.0" +LABEL description="A small image with necessary tools for the k8s course" + +USER root +# Update and installation of tools +RUN pacman -Syyu --noconfirm +RUN pacman-db-upgrade +RUN sudo pacman -Syu --needed --noconfirm base-devel +RUN useradd -ms /bin/bash k8s +RUN echo "k8s ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/k8s +USER k8s +WORKDIR /home/k8s +ADD --chown=k8s:k8s https://aur.archlinux.org/paru-bin.git#master /tmp/paru +RUN cd /tmp/paru \ + && makepkg -si --noconfirm +RUN paru -S --noconfirm neovim git k9s kubectl jq npm yq fluxcd k9s-flux helm helm-diff helmrelease-tools + +# configure nvim plugins +RUN git clone https://github.com/LazyVim/starter ~/.config/nvim \ + && rm -rf ~/.config/nvim/.git +COPY < + servers = { + yamlls = { + before_init = function(_, config) + vim.tbl_deep_extend("force", config, { settings = { yaml = { keyOrdering = false } } }) + end, + }, + }, + }, + }, + + { + "cwrau/yaml-schema-detect.nvim", + config = true, + ft = { "yaml" }, + }, +} +EOF + +RUN nvim --headless "+Lazy! sync" +qa