diff --git a/.github/workflows/cleanup-dev-images.yml b/.github/workflows/cleanup-dev-images.yml index 59c4fb6a..71a0a7b2 100644 --- a/.github/workflows/cleanup-dev-images.yml +++ b/.github/workflows/cleanup-dev-images.yml @@ -1,58 +1,36 @@ -name: Cleanup dev images of merged PRs - +name: Cleanup Pull Request Images on: - schedule: - - cron: "0 2 * * *" # Runs daily at 2 AM UTC - workflow_dispatch: # Allows manual triggering + pull_request: + types: [closed] + workflow_dispatch: + inputs: + pr-number: + description: 'Pull Request Number' + required: true + default: '0' env: - IMAGE_NAME: ckan-sddi-dev - IMAGE_OWNER: ${{ github.repository_owner }} + PACKAGE_NAME: ckan-sddi-dev jobs: - cleanup-ghcr: + ghcr-cleanup-image: + if: github.event_name == 'pull_request' + name: ghcr cleanup action runs-on: ubuntu-latest steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Get Image Tags from GHCR - run: | - GHCR_API="https://ghcr.io/v2/$IMAGE_OWNER/$IMAGE_NAME/tags/list" - TAGS=$(curl -s -H "Authorization: Bearer $(echo ${{ secrets.GITHUB_TOKEN }} | base64)" "$GHCR_API" | jq -r '.tags[]') - echo "$TAGS" > tags_list.txt - - - name: Identify Merged PRs - run: | - MAPPED_TAGS=() - while read -r TAG; do - if [[ $TAG =~ ^[a-zA-Z0-9]+-pr-(\d+)(?:-[a-f0-9]+)?$ ]]; then - PR_NUMBER=${BASH_REMATCH[1]} - RESPONSE=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - "https://api.github.com/repos/${{ github.repository }}/pulls/$PR_NUMBER") - MERGED=$(echo "$RESPONSE" | jq -r '.merged') - if [[ "$MERGED" == "true" ]]; then - MAPPED_TAGS+=("$TAG") - fi - fi - done < tags_list.txt - printf "%s\n" "${MAPPED_TAGS[@]}" > delete_tags.txt - echo "Images to be deleted:" && cat delete_tags.txt + - name: Delete image + uses: dataaxiom/ghcr-cleanup-action@v1 + with: + delete-tags: "*pr-${{github.event.pull_request.number}}*" + package: ${{ env.PACKAGE_NAME }} - - name: Delete Merged PR Images - if: ${{ always() }} - run: | - if [ -s delete_tags.txt ]; then - echo "Deleting the following images:" && cat delete_tags.txt - while read -r TAG; do - DIGEST=$(curl -s -H "Authorization: Bearer $(echo ${{ secrets.GITHUB_TOKEN }} | base64)" \ - -H "Accept: application/vnd.oci.image.manifest.v1+json" \ - "https://ghcr.io/v2/$IMAGE_OWNER/$IMAGE_NAME/manifests/$TAG" | jq -r '.config.digest') - if [ "$DIGEST" != "null" ]; then - GHCR_DELETE_URL="https://ghcr.io/v2/$IMAGE_OWNER/$IMAGE_NAME/manifests/$DIGEST" - curl -X DELETE -H "Authorization: Bearer $(echo ${{ secrets.GITHUB_TOKEN }} | base64)" "$GHCR_DELETE_URL" - fi - done < delete_tags.txt - else - echo "No images to delete." - fi + ghcr-cleanup-image-manual: + if: github.event_name == 'workflow_dispatch' + name: ghcr cleanup action + runs-on: ubuntu-latest + steps: + - name: Delete image + uses: dataaxiom/ghcr-cleanup-action@v1 + with: + delete-tags: "*pr-${{ inputs.pr-number }}*" + package: ${{ env.PACKAGE_NAME }} diff --git a/.github/workflows/devel.yml b/.github/workflows/devel.yml index 76c06059..388b7dc4 100644 --- a/.github/workflows/devel.yml +++ b/.github/workflows/devel.yml @@ -6,7 +6,7 @@ on: paths: - sddi-base/** - sddi/** - - sddi-social/** + workflow_dispatch: env: REGISTRY: ghcr.io @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - context: ['sddi-base', 'sddi', 'sddi-social'] + context: ['sddi-base', 'sddi'] fail-fast: true max-parallel: 1 permissions: @@ -26,10 +26,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Log in to the Github Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -37,7 +37,7 @@ jobs: - name: Extract metadata (tags, labels) for devel docker image id: meta - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} @@ -46,10 +46,11 @@ jobs: labels: | maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.title=ckan-sddi-docker + org.opencontainers.image.title=ckan-sddi-base-docker-devel + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }}:devel - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} push: true @@ -60,7 +61,7 @@ jobs: - name: Extract metadata (tags, labels) for devel-debug docker image id: meta-debug - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} @@ -69,10 +70,10 @@ jobs: labels: | maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.title=ckan-sddi-docker + org.opencontainers.image.title=ckan-sddi-base-docker-devel-debug - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }}:devel-debug - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} file: ${{ matrix.context }}/Dockerfile.debug diff --git a/.github/workflows/edge.yml b/.github/workflows/edge.yml index 4f0413a6..97cee2cd 100644 --- a/.github/workflows/edge.yml +++ b/.github/workflows/edge.yml @@ -6,7 +6,7 @@ on: paths: - sddi-base/** - sddi/** - - sddi-social/** + workflow_dispatch: env: REGISTRY: ghcr.io @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - context: ['sddi-base', 'sddi', 'sddi-social'] + context: ['sddi-base', 'sddi'] fail-fast: true max-parallel: 1 permissions: @@ -26,10 +26,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Log in to the Github Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -37,7 +37,7 @@ jobs: - name: Extract metadata (tags, labels) for docker image id: meta - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} @@ -46,10 +46,11 @@ jobs: labels: | maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.title=ckan-sddi-docker + org.opencontainers.image.title=ckan-sddi-base-docker-edge + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} push: true @@ -60,7 +61,7 @@ jobs: - name: Extract metadata (tags, labels) for debug docker image id: meta-debug - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} @@ -69,10 +70,11 @@ jobs: labels: | maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.title=ckan-sddi-docker + org.opencontainers.image.title=ckan-sddi-base-docker-edge-debug + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} file: ${{ matrix.context }}/Dockerfile.debug diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 405b6357..8ae21f10 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -5,7 +5,12 @@ on: paths: - sddi-base/** - sddi/** - - sddi-social/** + workflow_dispatch: + inputs: + pr-number: + description: 'Pull Request Number' + required: true + default: '0' env: REGISTRY: ghcr.io @@ -21,14 +26,14 @@ jobs: steps: - name: Parse short sha - uses: benjlevesque/short-sha@v1.2 + uses: benjlevesque/short-sha@v3.0 id: short-sha - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Log in to the Github Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -38,7 +43,7 @@ jobs: - name: Extract metadata (tags, labels) for docker image id: meta - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev @@ -51,9 +56,10 @@ jobs: maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.title=ckan-sddi-base-docker-dev + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-base-pr-${{github.event.number}} - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: push: true context: sddi-base @@ -67,7 +73,7 @@ jobs: - name: Extract metadata (tags, labels) for docker image id: meta-debug - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev @@ -80,9 +86,10 @@ jobs: maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.title=ckan-sddi-base-docker-dev-debug + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-base-pr-${{github.event.number}}-debug - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: push: true context: sddi-base @@ -102,7 +109,7 @@ jobs: - name: Extract metadata (tags, labels) for docker image id: meta-sddi - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev @@ -113,9 +120,10 @@ jobs: maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.title=ckan-sddi-docker-dev + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-pr-${{github.event.number}} - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: push: true context: sddi @@ -132,7 +140,7 @@ jobs: - name: Extract metadata (tags, labels) for docker image id: meta-sddi-debug - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev @@ -143,9 +151,10 @@ jobs: maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.title=ckan-sddi-docker-dev-debug + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-pr-${{github.event.number}}-debug - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: push: true context: sddi @@ -154,72 +163,9 @@ jobs: labels: ${{ steps.meta-sddi-debug.outputs.labels }} build-args: | BASEIMAGE_REPOSITORY=${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev - BASEIMAGE_VERSION=sddi-base-pr-${{github.event.number}}-${{ steps.short-sha.outputs.sha }} + BASEIMAGE_VERSION=sddi-pr-${{github.event.number}}-${{ steps.short-sha.outputs.sha }} - name: Print image names run: | echo "${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-pr-${{github.event.number}}-debug" echo "${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-pr-${{github.event.number}}-${{ steps.short-sha.outputs.sha }}-debug" - - # SDDI-SOCIAL - - - name: Extract metadata (tags, labels) for docker image - id: meta-sddi-social - uses: docker/metadata-action@v4 - with: - images: | - ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev - tags: | - type=ref,event=pr,prefix=sddi-social-pr- - type=ref,event=pr,prefix=sddi-social-pr-,suffix=-{{sha}} - labels: | - maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.title=ckan-sddi-social-docker-dev - - - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-social-pr-${{github.event.number}} - uses: docker/build-push-action@v4 - with: - push: true - context: sddi-social - tags: ${{ steps.meta-sddi-social.outputs.tags }} - labels: ${{ steps.meta-sddi-social.outputs.labels }} - build-args: | - BASEIMAGE_REPOSITORY=${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev - BASEIMAGE_VERSION=sddi-pr-${{github.event.number}}-${{ steps.short-sha.outputs.sha }} - - - name: Print image names - run: | - echo "${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-social-pr-${{github.event.number}}" - echo "${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-social-pr-${{github.event.number}}-${{ steps.short-sha.outputs.sha }}" - - - name: Extract metadata (tags, labels) for docker image - id: meta-sddi-social-debug - uses: docker/metadata-action@v4 - with: - images: | - ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev - tags: | - type=ref,event=pr,prefix=sddi-social-pr-,suffix=-debug - type=ref,event=pr,prefix=sddi-social-pr-,suffix=-{{sha}}-debug - labels: | - maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.title=ckan-sddi-social-docker-dev-debug - - - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-social-pr-${{github.event.number}}-debug - uses: docker/build-push-action@v4 - with: - push: true - context: sddi-social - file: sddi-social/Dockerfile.debug - tags: ${{ steps.meta-sddi-social-debug.outputs.tags }} - labels: ${{ steps.meta-sddi-social-debug.outputs.labels }} - build-args: | - BASEIMAGE_REPOSITORY=${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev - BASEIMAGE_VERSION=sddi-pr-${{github.event.number}}-${{ steps.short-sha.outputs.sha }} - - - name: Print image names - run: | - echo "${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-social-pr-${{github.event.number}}-debug" - echo "${{ env.REGISTRY }}/tum-gis/ckan-sddi-dev:sddi-social-pr-${{github.event.number}}-${{ steps.short-sha.outputs.sha }}-debug" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d9add43a..f6684be6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - context: ['sddi-base', 'sddi', 'sddi-social'] + context: ['sddi-base', 'sddi'] fail-fast: true max-parallel: 1 permissions: @@ -22,10 +22,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Log in to the Github Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -33,20 +33,22 @@ jobs: - name: Extract metadata (tags, labels) for docker image id: meta - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: | ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} labels: | maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.title=ckan-sddi-docker + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }} - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} push: true @@ -57,7 +59,7 @@ jobs: - name: Extract metadata (tags, labels) for debug docker image id: meta-debug - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: flavor: latest=true,suffix=-debug,onlatest=true @@ -66,13 +68,15 @@ jobs: tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} labels: | maintainer=Chair of Geoinformatics, Technical University of Munich (TUM) org.opencontainers.image.vendor=Chair of Geoinformatics, Technical University of Munich (TUM) - org.opencontainers.image.title=ckan-sddi-docker + org.opencontainers.image.title=ckan-sddi-docker-debug + org.opencontainers.image.documentation=https://github.com/tum-gis/ckan-docker - name: Build and publish ${{ env.REGISTRY }}/tum-gis/ckan-${{ matrix.context }}-debug - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} file: ${{ matrix.context }}/Dockerfile.debug diff --git a/CHANGELOG.md b/CHANGELOG.md index 4622ddcf..f745c569 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,19 +6,56 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). For releases `< 1.0.0` minor version steps may indicate breaking changes too. +## [3.1.0] - 2025-04-08 + +### Changed + +- Bump CKAN version `2.11.1` -> `2.11.2` +- Bump `ckanext-relation` `1.1.0` -> `1.1.1` + +### Remove + +- Removed `ckanext-envvars` as it is shipped with base image + +## [3.0.1] - 2025-04-04 + +### Changed + +- Maintenance for build workflows + +## [3.0.0] - 2025-03-21 + +### Added + +- `ckanext-envvars`, `ckanext-security`, `ckanext-scheme-sddi`, `ckanext-theme-sddi`, `ckanext-heroslideradmin`. Further details can be found in the changelog file for each plugin. + +### Changed + +- Migration from CKAN version 2.9.9. to CKAN 2.11.1 + - A CKAN base `ckan/ckan-base:2.11.1` image is used as the build stage image +- Updating the following extensions: `ckanext-hierarchy`,`ckanext-relation`, `ckanext-scheming`, `ckanext datesearch`, `ckanext-spatial`, `ckanext-geoview`, `ckanext-clamav`, `ckanext-dcat`. Further details can be found in the changelog file for each plugin. +- `sddi-base` image is re-organized accordingly to [#65](https://github.com/tum-gis/ckan-docker/issues/65) + +### Removed + +- `sddi-social` image accordingly to [#66](https://github.com/tum-gis/ckan-docker/issues/66) +- Some plugins are being dropped because they are either supported directly by CKAN or merged with other plugins: `ckanext-grouphierarchy-sddi` , `ckanext-composite`, `ckanext-repeating`, `ckanext-password-policy` + ## [2.1.2] - 2024-04-17 + ### Added + - Variable that defines after how many seconds of user inactivity the user is logged out `who.timeout = 1800` ### Fixed + - Various `ckanext-grouphierarchy-sddi` updates and fixing of styling bugs. See [CHANGELOG](https://github.com/tum-gis/ckanext-grouphierarchy-sddi/releases/tag/1.1.4) for changes. - Removed "Remember me" button on the login page - Fixing the missing variables for personalization of the main page - Repair the view of the dataset added by the organization on the main page - - -## [2.1.1] - 2024-04-17 -## [2.1.0] - 2024-04-17 + ## [2.0.1] - 2023-11-07 + ### Added - Expanding the Dataset Spatial Extend preview. tum-gis/ckan-docker#52 @@ -233,10 +270,11 @@ for production environments.** ### Known issues -[Unreleased]: https://github.com/tum-gis/ckan-docker/compare/2.1.2...HEAD +[Unreleased]: https://github.com/tum-gis/ckan-docker/compare/3.1.0...HEAD +[3.1.0]: https://github.com/tum-gis/ckan-docker/compare/3.0.1...3.1.0 +[3.0.1]: https://github.com/tum-gis/ckan-docker/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/tum-gis/ckan-docker/compare/2.1.2...3.0.0 [2.1.2]: https://github.com/tum-gis/ckan-docker/compare/2.1.1...2.1.2 -[2.1.1]: https://github.com/tum-gis/ckan-docker/compare/2.1.0...2.1.1 -[2.1.0]: https://github.com/tum-gis/ckan-docker/compare/2.0.1...2.1.0 [2.0.1]: https://github.com/tum-gis/ckan-docker/compare/2.0.0...2.0.1 [2.0.0]: https://github.com/tum-gis/ckan-docker/compare/1.2.0...2.0.0 [1.2.0]: https://github.com/tum-gis/ckan-docker/compare/1.1.3...1.2.0 diff --git a/README.md b/README.md index 32c2a878..eb9c0157 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,6 @@ See [packages](https://github.com/orgs/tum-gis/packages?repo_name=ckan-docker) f - [:inbox\_tray: Image flavor overview](#inbox_tray-image-flavor-overview) - [`sddi-base`](#sddi-base) - [`sddi`](#sddi) - - [`sddi-social`](#sddi-social) - [:1234: Image versioning](#1234-image-versioning) - [Development image versions](#development-image-versions) - [CKAN and CKAN extension versions](#ckan-and-ckan-extension-versions) @@ -71,7 +70,6 @@ exists in this repository, where the image can be pulled. ```bash docker pull ghcr.io/tum-gis/ckan-sddi-base docker pull ghcr.io/tum-gis/ckan-sddi -docker pull ghcr.io/tum-gis/ckan-sddi-social ``` @@ -95,15 +93,6 @@ This is the image most people will usually want. ghcr.io/tum-gis/ckan-sddi ``` -### `sddi-social` - -`sddi` + optional CKAN extension for social media features, that may require staff -for moderation of social media content. - -```text -ghcr.io/tum-gis/ckan-sddi-social -``` - ## :1234: Image versioning The images in this repo are versioned and tagged according to the @@ -115,7 +104,6 @@ All available tags are listed in the packages of each image: - [`sddi-base`](https://github.com/tum-gis/ckan-docker/pkgs/container/ckan-sddi-base) - [`sddi`](https://github.com/tum-gis/ckan-docker/pkgs/container/ckan-sddi) -- [`sddi-social`](https://github.com/tum-gis/ckan-docker/pkgs/container/ckan-sddi-social) ### Development image versions @@ -153,17 +141,13 @@ For instance, for commit 19a2e64 to PR tum-gis/ckan-docker#26 following images a - `ghcr.io/tum-gis/ckan-sddi-dev:sddi-pr-26-debug` - `ghcr.io/tum-gis/ckan-sddi-dev:sddi-pr-26-19a2e64` - `ghcr.io/tum-gis/ckan-sddi-dev:sddi-pr-26-19a2e64-debug` -- `ghcr.io/tum-gis/ckan-sddi-dev:sddi-social-pr-26` -- `ghcr.io/tum-gis/ckan-sddi-dev:sddi-social-pr-26-debug` -- `ghcr.io/tum-gis/ckan-sddi-dev:sddi-social-pr-26-19a2e64` -- `ghcr.io/tum-gis/ckan-sddi-dev:sddi-social-pr-26-19a2e64-debug` This registry will be cleared periodically. ### CKAN and CKAN extension versions -CKAN version: `2.9.9` -CKAN base image: `ghcr.io/keitaroinc/ckan:2.9.9-focal` +CKAN version: `2.11.2` +CKAN base image: `ckan/ckan-base:2.11.2` The CKAN catalog platform uses several extensions to provide the functionality needed for the SDDI concept. The table below lists the included extensions with @@ -177,21 +161,20 @@ are alway pinned to a stable release number or commit hash. > **Note:** Version pinning is only applied for release versions. The `edge` > image may depend on upstream branches instead. -| Extension | Version | `sddi-base` | `sddi` | `sddi-social` | Description | -|---|---|:---:|:---:|:---:|---| -| [`scheming`](https://github.com/MarijaKnezevic/ckanext-scheming) | `f98daec` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Configure and share CKAN dataset metadata forms. | -| [`hierarchy`](https://github.com/ckan/ckanext-hierarchy) | `v1.2.0` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Allows to organize organizations and groups in a hierarchy tree (nested groups/orgs). | -| [`grouphierarchysddi`](https://github.com/tum-gis/ckanext-grouphierarchy-sddi) | `1.1.4` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Extends `hierarchy` with pre-defined groups and topics of the SDDI concept. | -| [`relation`](https://github.com/tum-gis/ckanext-relation-sddi) | `1.0.3` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Enables to create and visualize different types of relations (*realated_to*, *depends_on*, *part_of*) between catalog entries. | -| [`spatial`](https://github.com/MarijaKnezevic/ckanext-spatial) | `c2118b9` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Provides the ability to search for datasets according to a given spatial extent. | -| [`datesearch`](https://github.com/MarijaKnezevic/ckanext-datesearch) | `1.0.2` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Provides the ability to search for datasets according to a given time frame. The search includes all datasets, in which the time of validity overlaps in at least one second with the search time frame. | -| [`repeating`](https://github.com/MarijaKnezevic/ckanext-repeating) | `1.0.0` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | This extension provides a way to store repeating fields in CKAN datasets, resources, organizations and groups. | -| [`composite`](https://github.com/EnviDat/ckanext-composite) | `1e6d7bb` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | The extension allows to store structured dataset metadata, single or multiple fields. Only one level of subfields is possible. The subfields can be basic text, date type or dropboxes. | -| [`restricted`](https://github.com/MarijaKnezevic/ckanext-restricted) | `1.0.0` | | :heavy_check_mark: | :heavy_check_mark: | CKAN extension to restrict the accessibility to the resources of a dataset. This way the package metadata is accesible but not the data itself (resource). The resource access restriction level can be individualy defined for every package. | -| [`dcat`](https://github.com/ckan/ckanext-dcat) | `v1.4.0` | | :heavy_check_mark: | :heavy_check_mark: | Allow CKAN to expose and consume metadata from other catalogs using RDF documents serialized using DCAT. | -| [`geoview`](https://github.com/ckan/ckanext-geoview) | `v0.0.20` | | :heavy_check_mark: | :heavy_check_mark: | This extension contains view plugins to display geospatial files and services in CKAN. | -| [`disqus`](https://github.com/ckan/ckanext-disqus) | | | | :heavy_check_mark: | The Disqus extension allows site visitors to comment on individual packages using an AJAX-based commenting system. The downsides of this plugin are that comments are not stored locally and user information is not shared between CKAN and the commenting system. | -| [`password_policy`](https://github.com/keitaroinc/ckanext-password-policy) | `5618dc9`|:heavy_check_mark: |:heavy_check_mark:| :heavy_check_mark: | CKAN extension that adds password policy for all the users. | +| Extension | Version | `sddi-base` |`sddi` | Description | +|---|---|:---:|:---:|:---| +| [`ckanext-hierarchy`](https://github.com/ckan/ckanext-hierarchy ) | `v1.2.2` | :heavy_check_mark: | :heavy_check_mark: | Allows to organize organizations and groups in a hierarchy tree (nested groups/orgs). | +| [`ckanext-scheming` ](https://github.com/ckan/ckanext-scheming ) | `27035f4` |:heavy_check_mark: | :heavy_check_mark: | Configure and share CKAN dataset metadata forms. | +| [`ckanext-geoview` ](https://github.com/ckan/ckanext-geoview) | `v0.2.2` |:heavy_check_mark: |:heavy_check_mark: | Configure and share CKAN dataset metadata forms. | +| [`ckanext-clamav` ](https://github.com/mutantsan/ckanext-clamav) | `a1d23ac` |:heavy_check_mark: | :heavy_check_mark: |CKAN extension that integrates ClamAV antivirus scanning to ensure the security of uploaded files by automatically checking them for malware.| +| [`ckanext-dcat` ](https://github.com/ckan/ckanext-dcat ) | `v1.5.1` |:heavy_check_mark: | :heavy_check_mark: |Allow CKAN to expose and consume metadata from other catalogs using RDF documents serialized using DCAT.| +| [`ckanext-relation-sddi`](https://github.com/tum-gis/ckanext-relation-sddi ) | `1.1.1` | | :heavy_check_mark: | Enables to create and visualize different types of relations (*realated_to*, *depends_on*, *part_of*) between catalog entries. | +| [`ckanext-datesearch`](https://github.com/MarijaKnezevic/ckanext-datesearch) | `1.1.0`|| :heavy_check_mark: | Provides the ability to search for datasets according to a given time frame. The search includes all datasets, in which the time of validity overlaps in at least one second with the search time frame. | +| [`ckanext-spatial`](https://github.com/ckan/ckanext-spatial) | `v2.3.0` | |:heavy_check_mark: | Enables geospatial capabilities to CKAN instance. | +| [`ckanext-scheme-sddi`](https://github.com/MarijaKnezevic/ckanext-scheme-sddi) | `0.0.1` || :heavy_check_mark: | This plugin is extending CKAN schema definition, validation, and custom field support accordingly to SDDI needs. | +| [`ckanext-theme-sddi`](https://github.com/MarijaKnezevic/ckanext-theme-sddi) | `0.0.4` | |:heavy_check_mark: | This plugin is customizing the look of SDDI CKAN instance with theme management capabilities for improved branding and user needs.| +| [`ckanext-security` ](https://github.com/MarijaKnezevic/ckanext-security) | `0.0.1` || :heavy_check_mark: | CKAN extension that enhances data access control. In the SDDI context, context is used to define the maximum number of failed logon attempts and to automatically log off after a period of inactivity.| +| [`ckanext-heroslideradmin` ](https://github.com/dathere/ckanext-heroslideradmin) | `4b60e00` | |:heavy_check_mark: | CKAN extension that enables the management of a hero slider on your CKAN site, allowing for dynamic display of featured content and improved visual engagement.| ## :rocket: Usage @@ -324,8 +307,7 @@ to the SDDI concepts, tools, documentations, education, and funding: [eit Climate-KIC](https://www.climate-kic.org/) (SDDI research project) for funding the work on SDDI concepts and implementation. -- [Tome Petrovski](https://github.com/TomeCirun) :raised_hands: for professional support - with CKAN and CKAN extension development. +- [Tome Petrovski](https://github.com/TomeCirun), [Konstantin Sivakov](https://github.com/tino097), [Ilche Bedelovski](https://github.com/ilchebedelovski) and [Aleksandra Lazoroska](https://github.com/aleksandralazoroska):raised_hands: for professional support with CKAN and CKAN extension development. - [KEITARO](https://www.keitaro.com/) for their [CKAN Docker images](https://github.com/keitaroinc/docker-ckan) and [CKAN Helm chart](https://github.com/keitaroinc/ckan-helm) that inspired this work. diff --git a/build-noCache.sh b/build-noCache.sh index 8438550f..86c31b50 100644 --- a/build-noCache.sh +++ b/build-noCache.sh @@ -33,30 +33,10 @@ docker build . \ -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}" # sddi:TAG-debug -docker build . \ - --no-cache \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi-base" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" - -printf "\n\n" - -# sddi-social ################################################################# -cd ../sddi-social - -# sddi-social:TAG docker build . \ --no-cache \ --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ --build-arg BASEIMAGE_VERSION=${IMAGE_TAG} \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}" - -# sddi-social:TAG-debug -docker build . \ - --no-cache \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}-debug" + -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" -cd .. printf "\n\n" diff --git a/build-push-noCache.sh b/build-push-noCache.sh index bcaac3c8..8468ca55 100644 --- a/build-push-noCache.sh +++ b/build-push-noCache.sh @@ -38,35 +38,11 @@ docker build . \ docker push "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}" # sddi:TAG-debug -docker build . \ - --no-cache \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi-base" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" - -docker push "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" -printf "\n\n" - -# sddi-social ################################################################# -cd ../sddi-social - -# sddi-social:TAG docker build . \ --no-cache \ --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ --build-arg BASEIMAGE_VERSION=${IMAGE_TAG} \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}" - -docker push "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}" - -# sddi-social:TAG-debug -docker build . \ - --no-cache \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}-debug" - -docker push "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}-debug" + -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" -cd .. +docker push "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" printf "\n\n" diff --git a/build-push.sh b/build-push.sh index 9ec76959..788530b3 100644 --- a/build-push.sh +++ b/build-push.sh @@ -35,32 +35,10 @@ docker build . \ docker push "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}" # sddi:TAG-debug -docker build . \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi-base" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" - -docker push "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" -printf "\n\n" - -# sddi-social ################################################################# -cd ../sddi-social - -# sddi-social:TAG docker build . \ --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ --build-arg BASEIMAGE_VERSION=${IMAGE_TAG} \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}" - -docker push "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}" - -# sddi-social:TAG-debug -docker build . \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}-debug" - -docker push "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}-debug" + -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" -cd .. +docker push "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" printf "\n\n" diff --git a/build.sh b/build.sh index d11e4c4b..ae381e47 100644 --- a/build.sh +++ b/build.sh @@ -30,27 +30,9 @@ docker build . \ -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}" # sddi:TAG-debug -docker build . \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi-base" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" - -printf "\n\n" - -# sddi-social ################################################################# -cd ../sddi-social - -# sddi-social:TAG docker build . \ --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ --build-arg BASEIMAGE_VERSION=${IMAGE_TAG} \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}" - -# sddi-social:TAG-debug -docker build . \ - --build-arg "BASEIMAGE_REPOSITORY=$IMAGE_REPOSITORY/ckan-sddi" \ - --build-arg BASEIMAGE_VERSION=${IMAGE_TAG}-debug \ - -t "$IMAGE_REPOSITORY/ckan-sddi-social:${IMAGE_TAG}-debug" + -t "$IMAGE_REPOSITORY/ckan-sddi:${IMAGE_TAG}-debug" -cd .. printf "\n\n" diff --git a/sddi-base/Dockerfile b/sddi-base/Dockerfile index 5e0614c1..554225c4 100644 --- a/sddi-base/Dockerfile +++ b/sddi-base/Dockerfile @@ -1,16 +1,28 @@ ############################################################################### -# Build stage +# Extbuild stage ############################################################################### -ARG CKAN_VERSION_BUILD_STAGE=2.9.9-dev -ARG CKAN_VERSION_BUILD_SPATIAL=2.9.9-focal -ARG CKAN_VERSION_RUNTIME_STAGE=2.9.9-focal +ARG CKAN_VERSION=2.11.2 -FROM ckan/ckan-base:${CKAN_VERSION_BUILD_STAGE} as extbuild +FROM ckan/ckan-base:${CKAN_VERSION} AS extbuild USER root +RUN apt-get update && apt-get install -y \ + curl \ + libpq-dev \ + autoconf \ + automake \ + libtool \ + patch \ + musl-dev \ + libpcre3-dev \ + libpcre3 \ + libffi-dev \ + libxml2-dev \ + libxslt-dev + # ckanext-hierarchy ########################################################### -ARG CKANEXT_HIERARCHY_VERSION="v1.2.0" +ARG CKANEXT_HIERARCHY_VERSION="v1.2.2" ENV CKANEXT_HIERARCHY_VERSION=${CKANEXT_HIERARCHY_VERSION} RUN set -ex && \ @@ -23,228 +35,152 @@ RUN set -ex && \ curl -o /wheels/ckanext-hierarchy.txt https://raw.githubusercontent.com/ckan/ckanext-hierarchy/${CKANEXT_HIERARCHY_VERSION}/requirements.txt && \ ls -lah /wheels -# ckanext-grouphierarchy ###################################################### -ARG CKANEXT_SDDI_VERSION="1.1.4" -ENV CKANEXT_SDDI_VERSION=${CKANEXT_SDDI_VERSION} - -RUN set -ex && \ - pip wheel --wheel-dir=/wheels \ - git+https://github.com/tum-gis/ckanext-grouphierarchy-sddi.git@${CKANEXT_SDDI_VERSION}#egg=ckanext-grouphierarchy && \ - pip wheel --wheel-dir=/wheels -r \ - https://raw.githubusercontent.com/tum-gis/ckanext-grouphierarchy-sddi/${CKANEXT_SDDI_VERSION}/requirements.txt && \ - curl -o /wheels/ckanext-grouphierarchy.txt \ - https://raw.githubusercontent.com/tum-gis/ckanext-grouphierarchy-sddi/${CKANEXT_SDDI_VERSION}/requirements.txt && \ - ls -lah /wheels - -# ckanext-relation ############################################################ -ARG CKANEXT_RELATION_VERSION="1.0.3" -ENV CKANEXT_RELATION_VERSION=${CKANEXT_RELATION_VERSION} - -RUN set -ex && \ - pip wheel --wheel-dir=/wheels \ - git+https://github.com/tum-gis/ckanext-relation-sddi.git@${CKANEXT_RELATION_VERSION}#egg=ckanext-relation && \ - pip wheel --wheel-dir=/wheels -r \ - https://raw.githubusercontent.com/tum-gis/ckanext-relation-sddi/${CKANEXT_RELATION_VERSION}/requirements.txt && \ - curl -o /wheels/ckanext-relation.txt \ - https://raw.githubusercontent.com/tum-gis/ckanext-relation-sddi/${CKANEXT_RELATION_VERSION}/requirements.txt && \ - ls -lah /wheels - # ckanext-scheming ############################################################ -ARG CKANEXT_SCHEMING_VERSION="f98daec" +ARG CKANEXT_SCHEMING_VERSION="27035f4" ENV CKANEXT_SCHEMING_VERSION=${CKANEXT_SCHEMING_VERSION} -ENV CKANEXT_SCHEMING_GITHUB_URL="https://github.com/MarijaKnezevic/ckanext-scheming" +ENV CKANEXT_SCHEMING_GITHUB_URL="https://github.com/ckan/ckanext-scheming" RUN set -ex && \ pip wheel --wheel-dir=/wheels \ git+${CKANEXT_SCHEMING_GITHUB_URL}.git@${CKANEXT_SCHEMING_VERSION}#egg=ckanext-scheming -# ckanext datesearch ########################################################## -ARG CKANEXT_DATESEARCH_VERSION="1.0.2" -ENV CKANEXT_DATESEARCH_VERSION=${CKANEXT_DATESEARCH_VERSION} -ENV CKANEXT_DATESEARCH_VERSION_GITHUB_URL="https://github.com/MarijaKnezevic/ckanext-datesearch" - -RUN set -ex && \ - pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_DATESEARCH_VERSION_GITHUB_URL}.git@${CKANEXT_DATESEARCH_VERSION}#egg=ckanext-datesearch - -# ckanext-composite ########################################################### -ARG CKANEXT_COMPOSITE_VERSION="1e6d7bb" -ENV CKANEXT_COMPOSITE_VERSION=${CKANEXT_COMPOSITE_VERSION} -ENV CKANEXT_COMPOSITE_GITHUB_URL="https://github.com/EnviDat/ckanext-composite" +# ckanext-geoview ############################################################# +ARG CKANEXT_GEOVIEW_VERSION="v0.2.2" +ENV CKANEXT_GEOVIEW_VERSION=${CKANEXT_GEOVIEW_VERSION} +ENV CKANEXT_GEOVIEW_GITHUB_URL="https://github.com/ckan/ckanext-geoview" RUN set -ex && \ - pip install -r \ - https://raw.githubusercontent.com/EnviDat/ckanext-composite/${CKANEXT_COMPOSITE_VERSION}/dev-requirements.txt && \ - pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_COMPOSITE_GITHUB_URL}.git@${CKANEXT_COMPOSITE_VERSION}#egg=ckanext-composite - -# ckanext-repeating ########################################################### -ARG CKANEXT_REPEATING_VERSION="1.0.0" -ENV CKANEXT_REPEATING_VERSION=${CKANEXT_REPEATING_VERSION} -ENV CKANEXT_REPEATING_GITHUB_URL="https://github.com/MarijaKnezevic/ckanext-repeating" - -RUN set -ex && \ - pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_REPEATING_GITHUB_URL}.git@${CKANEXT_REPEATING_VERSION}#egg=ckanext-repeating - -# ckanext-clamav ############################################################## -ARG CKANEXT_CALMAV_VERSION="master" -ENV CKANEXT_CALMAV_VERSION=${CKANEXT_CALMAV_VERSION} -ENV CKANEXT_CALMAV_GITHUB_URL="https://github.com/mutantsan/ckanext-clamav" - -RUN set -ex && \ - pip wheel --wheel-dir=/wheels -r \ - https://raw.githubusercontent.com/mutantsan/ckanext-clamav/${CKANEXT_CALMAV_VERSION}/requirements.txt && \ - curl -o /wheels/ckanext-clamav.txt \ - https://raw.githubusercontent.com/mutantsan/ckanext-clamav/${CKANEXT_CALMAV_VERSION}/requirements.txt && \ - pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_CALMAV_GITHUB_URL}.git@${CKANEXT_CALMAV_VERSION}#egg=ckanext-clamav - -# ckanext-password-policy ##################################################### -ARG CKANEXT_PASSWORD_POLICY_VERSION="5618dc9" -ENV CKANEXT_PASSWORD_POLICY_VERSION=${CKANEXT_PASSWORD_POLICY_VERSION} -ENV CKANEXT_PASSWORD_POLICY_GITHUB_URL="https://github.com/keitaroinc/ckanext-password-policy" - -RUN set -ex && \ - pip install -r \ - https://raw.githubusercontent.com/keitaroinc/ckanext-password-policy/${CKANEXT_PASSWORD_POLICY_VERSION}/requirements.txt && \ - curl -o /wheels/ckanext-password-policy.txt \ - https://raw.githubusercontent.com/keitaroinc/ckanext-password-policy/${CKANEXT_PASSWORD_POLICY_VERSION}/requirements.txt && \ - pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_PASSWORD_POLICY_GITHUB_URL}.git@${CKANEXT_PASSWORD_POLICY_VERSION}#egg=ckanext-password-policy - -# ckanext-spatial ############################################################# -FROM ghcr.io/keitaroinc/ckan:${CKAN_VERSION_BUILD_SPATIAL} as extbuild-spatial + curl -o /wheels/ckanext-geoview-dev-requirements.txt \ + ${CKANEXT_GEOVIEW_GITHUB_URL}/raw/${CKANEXT_GEOVIEW_VERSION}/dev-requirements.txt && \ + pip install -r /wheels/ckanext-geoview-dev-requirements.txt && \ + pip wheel --wheel-dir=/wheels \ + git+${CKANEXT_GEOVIEW_GITHUB_URL}.git@${CKANEXT_GEOVIEW_VERSION}#egg=ckanext-geoview -ARG CKANEXT_SPATIAL_VERSION="c2118b9" -ENV CKANEXT_SPATIAL_VERSION=${CKANEXT_SPATIAL_VERSION} +# ckanext-clamav ############################################################ +ARG CKANEXT_CLAMAV_VERSION="a1d23ac" +ENV CKANEXT_CLAMAV_VERSION=${CKANEXT_CLAMAV_VERSION} +ENV CKANEXT_CLAMAV_GITHUB_URL="https://github.com/DataShades/ckanext-clamav" -USER root - -# Install any system packages necessary to build extensions RUN set -ex && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - python3-dev python3-pip libxml2-dev libxslt1-dev libgeos-c1v5 python-is-python3 && \ - mkdir -p /wheels && \ - pip install -U pip + curl -o /wheels/ckanext-clamav-requirements.txt \ + ${CKANEXT_CLAMAV_GITHUB_URL}/raw/${CKANEXT_CLAMAV_VERSION}/requirements.txt && \ + pip install -r /wheels/ckanext-clamav-requirements.txt && \ + pip wheel --wheel-dir=/wheels \ + git+${CKANEXT_CLAMAV_GITHUB_URL}.git@${CKANEXT_CLAMAV_VERSION}#egg=ckanext-clamav -RUN set -ex && \ - pip install -r https://raw.githubusercontent.com/MarijaKnezevic/ckanext-spatial/${CKANEXT_SPATIAL_VERSION}/requirements.txt && \ - curl -o /wheels/ckanext-spatial.txt \ - https://raw.githubusercontent.com/MarijaKnezevic/ckanext-spatial/${CKANEXT_SPATIAL_VERSION}/requirements.txt && \ - pip install -r https://raw.githubusercontent.com/MarijaKnezevic/ckanext-spatial/${CKANEXT_SPATIAL_VERSION}/requirements-postgis.txt && \ - curl -o /wheels/ckanext-spatial-postgis.txt \ - https://raw.githubusercontent.com/MarijaKnezevic/ckanext-spatial/${CKANEXT_SPATIAL_VERSION}/requirements-postgis.txt && \ - ls -lah /wheels +# ckanext-dcat ########################################################## +ARG CKANEXT_DCAT_VERSION="v1.5.1" +ENV CKANEXT_DCAT_VERSION=${CKANEXT_DCAT_VERSION} +ENV CKANEXT_DCAT_GITHUB_URL="https://github.com/ckan/ckanext-dcat" RUN set -ex && \ - pip wheel --wheel-dir=/wheels \ - git+https://github.com/MarijaKnezevic/ckanext-spatial.git@${CKANEXT_SPATIAL_VERSION}#egg=ckanext-spatial + curl -o /wheels/ckanext-dcat-requirements.txt \ + https://raw.githubusercontent.com/ckan/ckanext-dcat/${CKANEXT_DCAT_VERSION}/requirements.txt && \ + pip install -r /wheels/ckanext-dcat-requirements.txt && \ + pip wheel --wheel-dir=/wheels \ + git+${CKANEXT_DCAT_GITHUB_URL}.git@${CKANEXT_DCAT_VERSION}#egg=ckanext-dcat ############################################################################### # Runtime stage ############################################################################### -FROM ghcr.io/keitaroinc/ckan:${CKAN_VERSION_RUNTIME_STAGE} as runtime +FROM ckan/ckan-base:${CKAN_VERSION} AS runtime -ENV CKAN__PLUGINS "image_view text_view recline_view webpage_view datastore datapusher \ - hierarchy_display hierarchy_form display_group relation \ - spatial_metadata spatial_query datesearch repeating composite scheming_datasets \ - password_policy clamav \ - envvars" - -# Extra env for compatibility with ckan/base Docker images for downstream k8s -ENV CKAN_INI=${APP_DIR}/production.ini -ENV CKAN_STORAGE_PATH=/var/lib/ckan -ENV TZ="UTC" +ENV CKAN_DIR=${SRC_DIR}/ckan +ENV DATA_DIR=/srv/app/data +ENV UWSGI_HARAKIRI=50 USER root -# Install any system packages necessary to build extensions -RUN set -ex && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - clamav \ - clamav-daemon \ - libxml2-dev libxslt1-dev libgeos-c1v5 && \ - pip install --no-cache-dir -U pip && \ - rm -rf /var/lib/apt/lists/* - -# Copy python wheels from build stage +# Setting the locale +ENV LC_ALL="en_US.UTF-8" +RUN update-locale LANG=${LC_ALL} + +# Update the package lists and install required packages +RUN apt-get update && apt-get install -y \ + bash \ + gettext \ + curl \ + unzip \ + libmagic1 \ + libpcre3 \ + libxslt1.1 \ + libxml2 \ + tzdata \ + apache2-utils \ + musl-dev \ + libssl-dev \ + proj-bin \ + libproj-dev \ + proj-data \ + python3-cffi \ + uwsgi-plugin-python3 + +# Cleanup to reduce image size +RUN apt-get clean && rm -rf /var/lib/apt/lists/* + +# Link python to python3 +RUN ln -s /usr/bin/python3 /usr/bin/python + +# Get artifacts from build stages COPY --from=extbuild /wheels ${APP_DIR}/ext_wheels -COPY --from=extbuild-spatial /wheels ${APP_DIR}/ext_wheels -# ckanext-hierarchy ########################################################### -RUN set -ex && \ - pip install --find-links=${APP_DIR}/ext_wheels -r ${APP_DIR}/ext_wheels/ckanext-hierarchy.txt && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-hierarchy +RUN chown -R ckan:ckan-sys ${APP_DIR} -# ckanext-grouphierarchy ###################################################### -RUN set -ex && \ - pip install --find-links=${APP_DIR}/ext_wheels -r ${APP_DIR}/ext_wheels/ckanext-grouphierarchy.txt && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-grouphierarchy +USER ckan -# ckanext-relation ############################################################ -RUN set -ex && \ - pip install --find-links=${APP_DIR}/ext_wheels -r ${APP_DIR}/ext_wheels/ckanext-relation.txt && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-relation +WORKDIR ${CKAN_DIR} -# ckanext-spatial ############################################################# +# ckanext-hierarchy ########################################################### RUN set -ex && \ - pip install -r ${APP_DIR}/ext_wheels/ckanext-spatial.txt && \ - pip install -r ${APP_DIR}/ext_wheels/ckanext-spatial-postgis.txt && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-spatial + pip install --find-links=${APP_DIR}/ext_wheels -r ${APP_DIR}/ext_wheels/ckanext-hierarchy.txt && \ + pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-hierarchy # ckanext-scheming ############################################################ RUN set -ex && \ pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-scheming -# ckanext-datesearch ########################################################## -RUN set -ex && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-datesearch - -# ckanext-composite ########################################################### +# ckanext-geoview ############################################################# RUN set -ex && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-composite + pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-geoview -# ckanext-repeating ########################################################### -RUN set -ex && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-repeating - -# ckanext-clamav ############################################################## +# ckanext-clamav ############################################################# RUN set -ex && \ - pip install -r ${APP_DIR}/ext_wheels/ckanext-clamav.txt && \ pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-clamav - -# ckanext-password-policy ##################################################### + +# ckanext-dcat ################################################################ RUN set -ex && \ - pip install -r ${APP_DIR}/ext_wheels/ckanext-password-policy.txt && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-password-policy + pip install --find-links=${APP_DIR}/ext_wheels -r ${APP_DIR}/ext_wheels/ckanext-dcat-requirements.txt && \ + pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-dcat + +ENV CKAN__PLUGINS "envvars image_view text_view webpage_view datastore \ + tracking \ + activity \ + hierarchy_display hierarchy_form \ + scheming_datasets \ + geo_view geojson_view wmts_view shp_view \ + dcat dcat_json_interface \ + clamav" -# Copy init scripts and additional files -COPY --chown=ckan:ckan initScripts/ ${APP_DIR}/docker-afterinit.d -COPY --chown=ckan:ckan who.ini ${APP_DIR}/who.ini +RUN set -ex && \ + ckan generate config ${CKAN_INI} RUN set -ex && \ ckan config-tool "${CKAN_INI}" "ckan.plugins = ${CKAN__PLUGINS}" && \ - ckan config-tool "${CKAN_INI}" "ckan.spatial.srid = 4326" && \ - ckan config-tool "${CKAN_INI}" "ckanext.spatial.search_backend = solr-bbox" && \ - ckan config-tool "${CKAN_INI}" "scheming.dataset_schemas = ckanext.scheming:ckan_dataset.yaml" && \ - ckan config-tool "${CKAN_INI}" "scheming.presets = ckanext.scheming:presets.json ckanext.repeating:presets.json ckanext.composite:presets.json" && \ ckan config-tool "${CKAN_INI}" "scheming.dataset_fallback = false" && \ - ckan config-tool "${CKAN_INI}" "licenses_group_url = https://raw.githubusercontent.com/tum-gis/ckanext-grouphierarchy-sddi/main/ckanext/grouphierarchy/licenses_SDDI.json" && \ - ckan config-tool "${CKAN_INI}" "ckanext.password_policy.password_length = 12" && \ - ckan config-tool "${CKAN_INI}" "ckanext.password_policy.failed_logins = 3" && \ - ckan config-tool "${CKAN_INI}" "ckanext.password_policy.user_locked_time = 600" && \ - ckan config-tool "${CKAN_INI}" "ckanext.spatial.common_map.type = custom" && \ - ckan config-tool "${CKAN_INI}" "ckanext.spatial.common_map.custom.url = https://tile.openstreetmap.de/{z}/{x}/{y}.png" && \ - ckan config-tool "${CKAN_INI}" "ckanext.spatial.common_map.attribution = OpenStreetMap contributors." && \ - ckan config-tool "${CKAN_INI}" "who.timeout = 1800" && \ - ckan config-tool "${CKAN_INI}" "ckan.auth.public_user_details = False" && \ - echo "${TZ}" > /etc/timezone && \ - mkdir -p ${CKAN_STORAGE_PATH} && \ - chown -R ckan:ckan ${APP_DIR} ${CKAN_STORAGE_PATH} && \ - # Remove wheels + ckan config-tool "${CKAN_INI}" "ckanext.dcat.enable_content_negotiation = True" && \ + ckan config-tool "${CKAN_INI}" "PERMANENT_SESSION_LIFETIME = 600" + +# Remove wheels +RUN set -ex && \ rm -rf ${APP_DIR}/ext_wheels -USER ckan +WORKDIR ${APP_DIR} + +# Create entrypoint directory for children image scripts +ONBUILD RUN mkdir -p /docker-entrypoint.d + +EXPOSE 5000 + +HEALTHCHECK --interval=60s --timeout=5s --retries=5 CMD curl --fail http://localhost:5000/api/3/action/status_show || exit CMD ["/srv/app/start_ckan.sh"] + +CMD ["/srv/app/start_ckan.sh"] diff --git a/sddi-base/Dockerfile.debug b/sddi-base/Dockerfile.debug index 92b661d5..386b8cd4 100644 --- a/sddi-base/Dockerfile.debug +++ b/sddi-base/Dockerfile.debug @@ -3,7 +3,7 @@ ARG BASEIMAGE_VERSION=edge FROM ${BASEIMAGE_REPOSITORY}:${BASEIMAGE_VERSION} -ARG CKAN_VERSION=2.9.9 +ARG CKAN_VERSION=2.11.2 ENV CKAN_VERSION=${CKAN_VERSION} USER root diff --git a/sddi-social/.dockerignore b/sddi-social/.dockerignore deleted file mode 100644 index 70bbfa55..00000000 --- a/sddi-social/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -# Ignore local helper scripts -/*.sh diff --git a/sddi-social/Dockerfile b/sddi-social/Dockerfile deleted file mode 100644 index aabb249f..00000000 --- a/sddi-social/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -# ############################################################################# -# # Build stage -# ############################################################################# -ARG BASEIMAGE_REPOSITORY=ghcr.io/tum-gis/ckan-sddi -ARG BASEIMAGE_VERSION=latest -ARG CKAN_VERSION_BUILD_STAGE=2.9.9-dev - -FROM ckan/ckan-base:${CKAN_VERSION_BUILD_STAGE} as extbuild - -USER root - -# ckanext-disqus ############################################################## -ARG CKANEXT_DISQUS_VERSION="d3fcdb7" -ENV CKANEXT_DISQUS_VERSION=${CKANEXT_DISQUS_VERSION} -ENV CKANEXT_DISQUS_GITHUB_URL="https://github.com/ckan/ckanext-disqus" - -RUN set -ex && \ - mkdir -p /wheels && \ - pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_DISQUS_GITHUB_URL}.git@${CKANEXT_DISQUS_VERSION}#egg=disqus - -# ############################################################################### -# # Runtime stage -# ############################################################################### -FROM ${BASEIMAGE_REPOSITORY}:${BASEIMAGE_VERSION} as runtime - -USER root - -ENV CKAN__PLUGINS "image_view text_view recline_view webpage_view datastore datapusher \ - hierarchy_display hierarchy_form display_group relation \ - spatial_metadata spatial_query datesearch repeating composite scheming_datasets \ - password_policy resource_proxy geo_view geojson_view wmts_view shp_view \ - dcat dcat_json_interface structured_data \ - restricted clamav \ - disqus \ - envvars" - -# Copy python wheels from build stage -COPY --from=extbuild /wheels ${APP_DIR}/ext_wheels - -# ckanext-dcat ################################################################ -RUN set -ex && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels disqus - -RUN set -ex && \ - ckan config-tool "${CKAN_INI}" "ckan.plugins = ${CKAN__PLUGINS}" && \ - # Remove wheels - rm -rf ${APP_DIR}/ext_wheels - -USER ckan diff --git a/sddi-social/Dockerfile.debug b/sddi-social/Dockerfile.debug deleted file mode 100644 index 935e7164..00000000 --- a/sddi-social/Dockerfile.debug +++ /dev/null @@ -1,19 +0,0 @@ -ARG BASEIMAGE_REPOSITORY=ghcr.io/tum-gis/ckan-sddi-social -ARG BASEIMAGE_VERSION=edge - -FROM ${BASEIMAGE_REPOSITORY}:${BASEIMAGE_VERSION} - -ARG CKAN_VERSION=2.9.9 -ENV CKAN_VERSION=${CKAN_VERSION} - -USER root - -ADD https://raw.githubusercontent.com/ckan/ckan/ckan-${CKAN_VERSION}/dev-requirements.txt /dev-requirements.txt -RUN set -ex && \ - pip install -r /dev-requirements.txt && \ - rm /dev-requirements.txt - -RUN set -ex && \ - ckan config-tool "${CKAN_INI}" "debug = True" - -USER ckan diff --git a/sddi/Dockerfile b/sddi/Dockerfile index b3d59a90..a5996eff 100644 --- a/sddi/Dockerfile +++ b/sddi/Dockerfile @@ -1,107 +1,192 @@ -# ############################################################################# -# # Build stage -# ############################################################################# +############################################################################### +# Extbuild stage +############################################################################### ARG BASEIMAGE_REPOSITORY=ghcr.io/tum-gis/ckan-sddi-base ARG BASEIMAGE_VERSION=latest -ARG CKAN_VERSION_BUILD_STAGE=2.9.9-dev +ARG CKAN_VERSION=2.11.2 -FROM ckan/ckan-base:${CKAN_VERSION_BUILD_STAGE} as extbuild +FROM ckan/ckan-base:${CKAN_VERSION} AS extbuild USER root -# ckanext-geoview ############################################################# -ARG CKANEXT_GEOVIEW_VERSION="v0.0.20" -ENV CKANEXT_GEOVIEW_VERSION=${CKANEXT_GEOVIEW_VERSION} -ENV CKANEXT_GEOVIEW_GITHUB_URL="https://github.com/ckan/ckanext-geoview" +RUN apt-get update && apt-get install -y \ + curl \ + libpq-dev \ + autoconf \ + automake \ + libtool \ + patch \ + musl-dev \ + libpcre3-dev \ + libpcre3 \ + libffi-dev \ + libxml2-dev \ + libxslt-dev + +RUN pip install -U markupsafe==2.0.1 sqlalchemy==1.4.41 + +# ckanext-relation ############################################################ +ARG CKANEXT_RELATION_VERSION="1.1.1" +ENV CKANEXT_RELATION_VERSION=${CKANEXT_RELATION_VERSION} RUN set -ex && \ - mkdir -p /wheels && \ - pip install -r \ - https://raw.githubusercontent.com/ckan/ckanext-geoview/${CKANEXT_GEOVIEW_VERSION}/dev-requirements.txt && \ pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_GEOVIEW_GITHUB_URL}.git@${CKANEXT_GEOVIEW_VERSION}#egg=ckanext-geoview + git+https://github.com/tum-gis/ckanext-relation-sddi.git@${CKANEXT_RELATION_VERSION}#egg=ckanext-relation && \ + pip wheel --wheel-dir=/wheels -r \ + https://raw.githubusercontent.com/tum-gis/ckanext-relation-sddi/${CKANEXT_RELATION_VERSION}/requirements.txt && \ + curl -o /wheels/ckanext-relation.txt \ + https://raw.githubusercontent.com/tum-gis/ckanext-relation-sddi/${CKANEXT_RELATION_VERSION}/requirements.txt && \ + ls -lah /wheels -# ckanext-dcat ################################################################ -ARG CKANEXT_DCAT_VERSION="v1.4.0" -ENV CKANEXT_DCAT_VERSION=${CKANEXT_DCAT_VERSION} -ENV CKANEXT_DCAT_GITHUB_URL="https://github.com/ckan/ckanext-dcat" +# ckanext datesearch ########################################################## +ARG CKANEXT_DATESEARCH_VERSION="1.1.1" +ENV CKANEXT_DATESEARCH_VERSION=${CKANEXT_DATESEARCH_VERSION} +ENV CKANEXT_DATESEARCH_VERSION_GITHUB_URL="https://github.com/MarijaKnezevic/ckanext-datesearch" RUN set -ex && \ - pip install -r \ - https://raw.githubusercontent.com/ckan/ckanext-dcat/${CKANEXT_DCAT_VERSION}/dev-requirements.txt && \ - curl -o /wheels/ckanext-dcat.txt \ - https://raw.githubusercontent.com/ckan/ckanext-dcat/${CKANEXT_DCAT_VERSION}/requirements.txt && \ pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_DCAT_GITHUB_URL}.git@${CKANEXT_DCAT_VERSION}#egg=ckanext-dcat + git+${CKANEXT_DATESEARCH_VERSION_GITHUB_URL}.git@${CKANEXT_DATESEARCH_VERSION}#egg=ckanext-datesearch -# ckanext-restricted ########################################################## -ARG CKANEXT_RESTRICTED_VERSION="1.0.0" -ENV CKANEXT_RESTRICTED_VERSION=${CKANEXT_RESTRICTED_VERSION} -ENV CKANEXT_RESTRICTED_GITHUB_URL="https://github.com/MarijaKnezevic/ckanext-restricted" +# ckanext-spatial ############################################################# +ENV CKANEXT_SPATIAL_GITHUB_URL="https://github.com/ckan/ckanext-spatial" +ENV CKANEXT_SPATIAL_VERSION="v2.3.0" RUN set -ex && \ - pip install -r \ - https://raw.githubusercontent.com/MarijaKnezevic/ckanext-restricted/${CKANEXT_RESTRICTED_VERSION}/dev-requirements.txt && \ + curl -o /wheels/ckanext-spatial-requirements.txt \ + https://raw.githubusercontent.com/ckan/ckanext-spatial/${CKANEXT_SPATIAL_VERSION}/requirements-py2.txt && \ pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_RESTRICTED_GITHUB_URL}.git@${CKANEXT_RESTRICTED_VERSION}#egg=ckanext-restricted + git+${CKANEXT_SPATIAL_GITHUB_URL}.git@${CKANEXT_SPATIAL_VERSION}#egg=ckanext-spatial -# ckanext-clamav ############################################################## -ARG CKANEXT_CALMAV_VERSION="master" -ENV CKANEXT_CALMAV_VERSION=${CKANEXT_CALMAV_VERSION} -ENV CKANEXT_CALMAV_GITHUB_URL="https://github.com/mutantsan/ckanext-clamav" +# ckanext-theme-sddi ############################################################# +ARG CKANEXT_THEME_SDDI_VERSION="0.0.4" +ENV CKANEXT_THEME_SDDI_VERSION=${CKANEXT_THEME_SDDI_VERSION} +ENV CKANEXT_THEME_SDDI_GITHUB_URL="https://github.com/MarijaKnezevic/ckanext-theme-sddi" RUN set -ex && \ - pip wheel --wheel-dir=/wheels -r \ - https://raw.githubusercontent.com/mutantsan/ckanext-clamav/${CKANEXT_CALMAV_VERSION}/requirements.txt && \ - curl -o /wheels/ckanext-clamav.txt \ - https://raw.githubusercontent.com/mutantsan/ckanext-clamav/${CKANEXT_CALMAV_VERSION}/requirements.txt && \ - pip wheel --wheel-dir=/wheels \ - git+${CKANEXT_CALMAV_GITHUB_URL}.git@${CKANEXT_CALMAV_VERSION}#egg=ckanext-clamav - -# ############################################################################# -# # Runtime stage -# ############################################################################# -FROM ${BASEIMAGE_REPOSITORY}:${BASEIMAGE_VERSION} as runtime + curl -o /wheels/ckanext-theme-sddi-dev-requirements.txt \ + ${CKANEXT_THEME_SDDI_GITHUB_URL}/raw/${CKANEXT_THEME_SDDI_VERSION}/requirements.txt && \ + pip install -r /wheels/ckanext-theme-sddi-dev-requirements.txt && \ + pip wheel --wheel-dir=/wheels \ + git+${CKANEXT_THEME_SDDI_GITHUB_URL}.git@${CKANEXT_THEME_SDDI_VERSION}#egg=ckanext-theme-sddi + +# ckanext-security ###################################################### +ARG CKANEXT_SECURITY_VERSION="0.0.1" +ENV CKANEXT_SECURITY_VERSION=${CKANEXT_SECURITY_VERSION} +ENV CKANEXT_SECURITY_GITHUB_URL="https://github.com/MarijaKnezevic/ckanext-security" + +RUN set -ex && \ + curl -o /wheels/ckanext-security-requirements.txt \ + https://raw.githubusercontent.com/MarijaKnezevic/ckanext-security/${CKANEXT_SECURITY_VERSION}/requirements.txt && \ + pip install -r /wheels/ckanext-security-requirements.txt && \ + pip wheel --wheel-dir=/wheels \ + git+${CKANEXT_SECURITY_GITHUB_URL}.git@${CKANEXT_SECURITY_VERSION}#egg=ckanext-security + +############################################################################### +# Runtime stage +############################################################################### +FROM ${BASEIMAGE_REPOSITORY}:${BASEIMAGE_VERSION} AS runtime + +ENV CKAN_DIR=${SRC_DIR}/ckan +ENV DATA_DIR=/srv/app/data +ENV UWSGI_HARAKIRI=50 USER root -ENV CKAN__PLUGINS "image_view text_view recline_view webpage_view datastore datapusher \ - hierarchy_display hierarchy_form display_group relation \ - spatial_metadata spatial_query datesearch repeating composite scheming_datasets \ - password_policy resource_proxy geo_view geojson_view wmts_view shp_view \ - dcat dcat_json_interface structured_data \ - restricted clamav \ - envvars" +# Setting the locale +ENV LC_ALL="en_US.UTF-8" +RUN update-locale LANG=${LC_ALL} + +# Cleanup to reduce image size +RUN apt-get clean && rm -rf /var/lib/apt/lists/* -# Copy python wheels from build stage +# Get artifacts from build stages COPY --from=extbuild /wheels ${APP_DIR}/ext_wheels -# ckanext-geoview ############################################################# +RUN chown -R ckan:ckan-sys ${APP_DIR} + +USER ckan + +WORKDIR ${CKAN_DIR} + +# ckanext-relation ############################################################ RUN set -ex && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-geoview + pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-relation -# ckanext-dcat ################################################################ +# ckanext-datesearch ########################################################## RUN set -ex && \ - pip install -r ${APP_DIR}/ext_wheels/ckanext-dcat.txt && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-dcat + pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-datesearch -# ckanext-restricted ########################################################## +# ckanext-spatial ############################################################# RUN set -ex && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-restricted + pip install -e 'git+https://github.com/ckan/ckanext-spatial.git#egg=ckanext-spatial' && \ + pip install -r 'https://raw.githubusercontent.com/ckan/ckanext-spatial/master/requirements.txt' -# ckanext-clamav ############################################################## +# ckanext-scheme-sddi ############################################################ RUN set -ex && \ - pip install -r ${APP_DIR}/ext_wheels/ckanext-clamav.txt && \ - pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-clamav - + pip install -e "git+https://github.com/MarijaKnezevic/ckanext-scheme-sddi@0.0.2#egg=ckanext-scheme-sddi" + +# ckanext-theme-sddi ############################################################# +RUN set -ex && \ + pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-theme-sddi + +# ckanext-heroslideradmin ############################################################# +RUN set -ex && \ + pip install -e "git+https://github.com/dathere/ckanext-heroslideradmin.git@4b60e00#egg=ckanext-heroslideradmin" + +# ckanext-security ###################################################### +RUN set -ex && \ + pip install --find-links=${APP_DIR}/ext_wheels -r ${APP_DIR}/ext_wheels/ckanext-security-requirements.txt && \ + pip install --no-index --find-links=${APP_DIR}/ext_wheels ckanext-security + +ENV CKAN__PLUGINS "envvars image_view text_view webpage_view datastore \ + tracking \ + activity \ + security \ + hierarchy_display hierarchy_form \ + relation \ + spatial_metadata spatial_query \ + datesearch \ + scheme_sddi \ + theme_sddi \ + scheming_datasets \ + geo_view geojson_view wmts_view shp_view \ + heroslideradmin \ + dcat dcat_json_interface \ + clamav" + +RUN set -ex && \ + ckan generate config ${CKAN_INI} + RUN set -ex && \ ckan config-tool "${CKAN_INI}" "ckan.plugins = ${CKAN__PLUGINS}" && \ - ckan config-tool "${CKAN_INI}" "ckanext.geoview.ol_viewer.formats = wms kml" && \ - ckan config-tool "${CKAN_INI}" "ckanext.geoview.shp_viewer.srid = 4326" && \ - ckan config-tool "${CKAN_INI}" "ckanext.geoview.shp_viewer.encoding = UTF-8" && \ - ckan config-tool "${CKAN_INI}" "who.timeout = 1800" && \ - ckan config-tool "${CKAN_INI}" "ckan.auth.public_user_details = False" && \ - # Remove wheels + ckan config-tool "${CKAN_INI}" "ckan.spatial.srid = 4326" && \ + ckan config-tool "${CKAN_INI}" "ckanext.spatial.search_backend = solr-bbox" && \ + ckan config-tool "${CKAN_INI}" "ckanext.spatial.use_postgis_sorting = true" && \ + ckan config-tool "${CKAN_INI}" "scheming.dataset_schemas = ckanext.scheme_sddi:sddi_dataset.yaml" && \ + ckan config-tool "${CKAN_INI}" "scheming.presets = ckanext.scheming:presets.json ckanext.scheme_sddi:sddi_presets.json" && \ + ckan config-tool "${CKAN_INI}" "scheming.dataset_fallback = false" && \ + ckan config-tool "${CKAN_INI}" "ckanext.dathere_theme.column_count = 4" && \ + ckan config-tool "${CKAN_INI}" "ckanext.spatial.common_map.type = custom" && \ + ckan config-tool "${CKAN_INI}" "ckanext.spatial.common_map.custom.url = https://tile.openstreetmap.de/{z}/{x}/{y}.png" && \ + ckan config-tool "${CKAN_INI}" "ckanext.spatial.common_map.attribution = OpenStreetMap contributors." && \ + ckan config-tool "${CKAN_INI}" "ckanext.security.lock_timeout = 900" && \ + ckan config-tool "${CKAN_INI}" "ckanext.security.login_max_count = 3" && \ + ckan config-tool "${CKAN_INI}" "ckanext.security.brute_force_key = user_name" && \ + ckan config-tool "${CKAN_INI}" "ckanext.security.disable_password_reset_override = true" && \ + ckan config-tool "${CKAN_INI}" "ckanext.security.enable_totp = true" && \ + ckan config-tool "${CKAN_INI}" "ckanext.dcat.enable_content_negotiation = true" && \ + ckan config-tool "${CKAN_INI}" "PERMANENT_SESSION_LIFETIME = 600" + +# Remove wheels +RUN set -ex && \ rm -rf ${APP_DIR}/ext_wheels -USER ckan +WORKDIR ${APP_DIR} + +# Create entrypoint directory for children image scripts +ONBUILD RUN mkdir -p /docker-entrypoint.d + +EXPOSE 5000 +HEALTHCHECK --interval=60s --timeout=5s --retries=5 CMD curl --fail http://localhost:5000/api/3/action/status_show || exit CMD ["/srv/app/start_ckan.sh"] + +CMD ["/srv/app/start_ckan.sh"] diff --git a/sddi/Dockerfile.debug b/sddi/Dockerfile.debug index c38d9756..f27428c7 100644 --- a/sddi/Dockerfile.debug +++ b/sddi/Dockerfile.debug @@ -3,7 +3,7 @@ ARG BASEIMAGE_VERSION=edge FROM ${BASEIMAGE_REPOSITORY}:${BASEIMAGE_VERSION} -ARG CKAN_VERSION=2.9.9 +ARG CKAN_VERSION=2.11.2 ENV CKAN_VERSION=${CKAN_VERSION} USER root