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