Merge pull request #59 from mjanez/fix/nginx-multilocations
Fix/nginx multilocations
This commit is contained in:
commit
ab4b99133b
13
.env.example
13
.env.example
|
@ -32,15 +32,18 @@ TEST_CKAN_REDIS_URL=redis://redis:6379/1
|
|||
# NGINX
|
||||
NGINX_PORT=80
|
||||
NGINX_SSLPORT=443
|
||||
NGINX_LOG_DIR=/var/log/nginx
|
||||
|
||||
# Apache HTTP Server
|
||||
APACHE_VERSION=2.4-alpine
|
||||
APACHE_PORT=80
|
||||
APACHE_LOG_DIR=/var/log/apache
|
||||
APACHE_SERVER_NAME=localhost
|
||||
# Check CKAN__ROOT_PATH and CKANEXT__DCAT__BASE_URI. If you don't need to use domain locations, it is better to use the nginx configuration. Leave blank or use the root `/`.
|
||||
APACHE_CKAN_LOCATION=/catalog
|
||||
APACHE_PYCSW_LOCATION=/csw
|
||||
|
||||
#NIGNX/APACHE
|
||||
## Check CKAN__ROOT_PATH and CKANEXT__DCAT__BASE_URI. If you don't need to use domain locations, it is better to use the nginx configuration. Leave blank or use the root `/`.
|
||||
PROXY_SERVER_NAME=localhost
|
||||
PROXY_CKAN_LOCATION=/catalog
|
||||
PROXY_PYCSW_LOCATION=/csw
|
||||
|
||||
# pycsw
|
||||
PYCSW_PORT=8000
|
||||
|
@ -76,7 +79,7 @@ TEST_CKAN_DATASTORE_READ_URL=postgresql://datastore_ro:datastore@db/datastore_te
|
|||
## If use docker-compose.ghcr.yml only "*.*.*" versions available in: https://github.com/mjanez/ckan-docker/pkgs/container/ckan-spatial
|
||||
CKAN_VERSION=2.9.9
|
||||
CKAN_SITE_ID=default
|
||||
# CKAN_SITE_URL = http:/ or https:/ + APACHE_SERVER_NAME. Optionally the APACHE_HOST_PORT if different from 80
|
||||
# CKAN_SITE_URL = http:/ or https:/ + PROXY_SERVER_NAME. Optionally the APACHE_HOST_PORT if different from 80
|
||||
CKAN_SITE_URL=http://localhost
|
||||
CKAN__ROOT_PATH=/catalog/{{LANG}}
|
||||
CKAN_PORT=5000
|
||||
|
|
90
README.md
90
README.md
|
@ -40,26 +40,25 @@ The non-CKAN images are as follows:
|
|||
* PostgreSQL: [Custom image](/postgresql/Dockerfile) based on official PostgreSQL image. Database files are stored in a named volume.
|
||||
* Solr: CKAN's [pre-configured Solr image](https://github.com/ckan/ckan-solr). The index data is stored in a named volume and has a spatial schema. [^2]
|
||||
* Redis: standard Redis image
|
||||
* Apache HTTP Server: [Custom image](/apache/Dockerfile) based on official latest stable httpd image. Configured to serve multiple routes for the [ckan-pycsw](#ckan-pycsw) CSW endpoint (`{CKAN_SITE_URL}/csw`) and CKAN (`{CKAN_SITE_URL}/catalog`).
|
||||
* NGINX: latest stable nginx image that includes SSL and Non-SSL endpoints.
|
||||
* ckan-pycsw: [Custom image](/ckan-pycsw/Dockerfile) based on [pycsw CKAN harvester ISO19139](https://github.com/mjanez/ckan-pycsw) for INSPIRE Metadata CSW Endpoint.
|
||||
|
||||
Optional HTTP Endpoint ([`docker-compose.nginx.yml`](/docker-compose.nginx.yml)):
|
||||
* `docker-compose.nginx.yml`:
|
||||
* NGINX: latest stable nginx image that includes SSL and Non-SSL endpoints instead of Apache HTTP Server. No locations, no ckan-pycsw, only CKAN.
|
||||
|
||||
Optional HTTP Endpoint ([`docker-compose.apache.yml`](/docker-compose.apache.yml)):
|
||||
* `docker-compose.apache.yml`:
|
||||
* Apache HTTP Server: [Custom image](/apache/Dockerfile) based on official latest stable httpd image. Configured to serve multiple routes for the [ckan-pycsw](#ckan-pycsw) CSW endpoint (`{CKAN_SITE_URL}/csw`) and CKAN (`{CKAN_SITE_URL}/catalog`). Only HTTP.
|
||||
|
||||
| Compose files | Repository | Type | Docker tag | Size | Notes |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.nginx.yml`](/docker-cospatianginx.yml) | CKAN 2.9.8 | custom image | [`mjanez/ckan-spatial:ckan-2.9.8`](https://github.com/mjanez/ckan-docker/pkgs/container/ckan-spatial) | 800 MB | Custom Dockerfile: [`ckan/Dockerfile`](/ckan/Dockerfile) |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.nginx.yml`](/docker-compose.nginx.yml) | PostgreSQL 15.2 | base image | [`postgres/postgres:15-alpine`](https://hub.docker.com/layers/library/postgres/15-alpine/images/sha256-53a02ecbe9d18ff6476e6651c34811da39f054424c725fc15d2b480fc3fab877?context=explore) | 89.74 MB | Custom Dockerfile: [`postgresql/Dockerfile`](/postgresql/Dockerfile) |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.nginx.yml`](/docker-compose.nginx.yml) | Solr 8.11.1 | custom image | [`ckan/ckan-solr:2.9-solr8-spatial`](https://registry.hub.docker.com/layers/ckan/ckan-solr/2.9-solr8-spatial/images/sha256-b5ee4979891c7dd1f10d2ac2cbdd4d80ff656879edb0f0493616be7b4cf8bc3a?context=explore) | 331.1 MB | CKAN's [pre-configured spatial Solr image](https://github.com/ckan/ckan-solr). |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.nginx.yml`](/docker-compose.nginx.yml) | Redis 7.0.10 | base image | [`redis/redis:7-alpine`](https://hub.docker.com/layers/library/redis/7-alpine/images/sha256-98f4ea44e912d0941d29015a4e2448151b94411109c896b5627d94d79306eea7?context=explore) | 11.82 MB | - |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.apache.yml`](/docker-compose.apache.yml) | CKAN 2.9.8 | custom image | [`mjanez/ckan-spatial:ckan-2.9.8`](https://github.com/mjanez/ckan-docker/pkgs/container/ckan-spatial) | 800 MB | Custom Dockerfile: [`ckan/Dockerfile`](/ckan/Dockerfile) |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.apache.yml`](/docker-compose.apache.yml) | PostgreSQL 15.2 | base image | [`postgres/postgres:15-alpine`](https://hub.docker.com/layers/library/postgres/15-alpine/images/sha256-53a02ecbe9d18ff6476e6651c34811da39f054424c725fc15d2b480fc3fab877?context=explore) | 89.74 MB | Custom Dockerfile: [`postgresql/Dockerfile`](/postgresql/Dockerfile) |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.apache.yml`](/docker-compose.apache.yml) | Solr 8.11.1 | custom image | [`ckan/ckan-solr:2.9-solr8-spatial`](https://registry.hub.docker.com/layers/ckan/ckan-solr/2.9-solr8-spatial/images/sha256-b5ee4979891c7dd1f10d2ac2cbdd4d80ff656879edb0f0493616be7b4cf8bc3a?context=explore) | 331.1 MB | CKAN's [pre-configured spatial Solr image](https://github.com/ckan/ckan-solr). |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) / [`docker-compose.apache.yml`](/docker-compose.apache.yml) | Redis 7.0.10 | base image | [`redis/redis:7-alpine`](https://hub.docker.com/layers/library/redis/7-alpine/images/sha256-98f4ea44e912d0941d29015a4e2448151b94411109c896b5627d94d79306eea7?context=explore) | 11.82 MB | - |
|
||||
| [`docker-compose.yml`](/docker-compose.yml) | Apache HTTP Server 2.4 | custom image | [`httpd/httpd:2.4`](https://hub.docker.com/layers/library/httpd/2.4/images/sha256-f34e8e25ee18da020633ef0b2bf7516d8cfdad5c5c4b0595d36e5cd78a098101?context=explore) | 54.47 MB | Custom Dockerfile: [`apache/Dockerfile`](/apache/Dockerfile) |
|
||||
| [`docker-compose.yml`](/docker-compose.yml)| pycsw CKAN harvester ISO19139 | custom image | [`mjanez/ckan-pycsw:latest`](https://github.com/mjanez/ckan-pycsw/pkgs/container/ckan-pycsw) | 175 MB | Custom Dockerfile: [`ckan-pycsw/Dockerfile`](/ckan-pycsw/Dockerfile) |
|
||||
| [`docker-compose.nginx.yml`](/docker-compose.nginx.yml) | NGINX 1.22.1 | base image | [`nginx:stable-alpine`](https://hub.docker.com/layers/library/nginx/stable-alpine/images/sha256-ff2a5d557ca22fa93669f5e70cfbeefda32b98f8fd3d33b38028c582d700f93a?context=explore) | 9.74 MB | No routing, only CKAN. Custom Dockerfile: [`nginx/Dockerfile`](/nginx/Dockerfile) |
|
||||
| [`docker-compose.apache.yml`](/docker-compose.apache.yml) | NGINX 1.22.1 | base image | [`nginx:stable-alpine`](https://hub.docker.com/layers/library/nginx/stable-alpine/images/sha256-ff2a5d557ca22fa93669f5e70cfbeefda32b98f8fd3d33b38028c582d700f93a?context=explore) | 9.74 MB | No routing, only CKAN. Custom Dockerfile: [`nginx/Dockerfile`](/nginx/Dockerfile) |
|
||||
|
||||
|
||||
The site is configured using environment variables that you can set in the `.env` file for an Apache HTTP Server and ckan-pycsw deployment (default `.env.example`), or replace it with the [`.env.nginx.example`](/samples/.env.nginx.example) for a NGINX and CKAN-only deployment using the Docker Compose file: [`docker-compose.nginx.yml`](/docker-compose.nginx.yml).
|
||||
The site is configured using environment variables that you can set in the `.env` file for an NGINX and ckan-pycsw deployment (default `.env.example`), or replace it with the [`.env.apache.example`](/samples/.env.apache.example) for a Apache HTTP Server deployment using the Docker Compose file: [`docker-compose.apache.yml`](/docker-compose.apache.yml).
|
||||
|
||||
|
||||
### ckan-docker roadmap
|
||||
|
@ -118,9 +117,9 @@ Use this if you are a maintainer and will not be making code changes to CKAN or
|
|||
cp .env.example .env
|
||||
```
|
||||
|
||||
- **Apache HTTP Server & CKAN/ckan-pycsw endpoints**: Modifiy the variables about the site URL or locations (`CKAN_SITE_URL` `CKAN_URL`, `PYCSW_URL`, `CKANEXT__DCAT__BASE_URI`, `APACHE_SERVER_NAME`, `APACHE_CKAN_LOCATION`, `APACHE_PYCSW_LOCATION`, etc.).
|
||||
- **NGINX & CKAN/ckan-pycsw endpoints**: Modifiy the variables about the site URL or locations (`CKAN_SITE_URL` `CKAN_URL`, `PYCSW_URL`, `CKANEXT__DCAT__BASE_URI`, `PROXY_SERVER_NAME`, `PROXY_CKAN_LOCATION`, `PROXY_PYCSW_LOCATION`, etc.).
|
||||
|
||||
- **NGINX only CKAN**: Replace the [`.env`](/.env) with the [`/samples/.env.nginx.example`](/samples/.env.nginx.example) and modify the variables as needed.
|
||||
- **Apache HTTP Server**: Replace the [`.env`](/.env) with the [`/samples/.env.apache.example`](/samples/.env.apache.example) and modify the variables as needed.
|
||||
|
||||
>**Note**:<br>
|
||||
> Please note that when accessing CKAN directly (via a browser) ie: not going through Apache/NGINX you will need to make sure you have "ckan" set up to be an alias to localhost in the local hosts file. Either that or you will need to change the `.env` entry for `CKAN_SITE_URL`
|
||||
|
@ -149,7 +148,7 @@ window for something else.
|
|||
|
||||
>**Note**<br>
|
||||
> * Or `docker compose up --build` to build & up the containers.
|
||||
> * Or `docker compose -f docker-compose.nginx.yml up -d --build` to use the NGINX version.
|
||||
> * Or `docker compose -f docker-compose.apache.yml up -d --build` to use the Apache HTTP Server version.
|
||||
|
||||
>**Note**<br>
|
||||
> Learn more about configuring this ckan docker:
|
||||
|
@ -158,11 +157,11 @@ window for something else.
|
|||
|
||||
At the end of the container start sequence there should be 6 containers running (or 5 if use NGINX Docker Compose file)
|
||||
|
||||
After this step, CKAN should be running at {`APACHE_SERVER_NAME`}{`APACHE_CKAN_LOCATION`} and ckan-pycsw at {`APACHE_SERVER_NAME`}{`APACHE_PYCSW_LOCATION`}, i.e: http://localhost/catalog or http://localhost/csw
|
||||
After this step, CKAN should be running at {`PROXY_SERVER_NAME`}{`PROXY_CKAN_LOCATION`} and ckan-pycsw at {`PROXY_SERVER_NAME`}{`PROXY_PYCSW_LOCATION`}, i.e: http://localhost/catalog or http://localhost/csw
|
||||
|
||||
|CONTAINER ID |IMAGE |COMMAND|CREATED|STATUS|PORTS|NAMES|
|
||||
|------------|----------------------------------|--------------------|-------|-------|------|-----|
|
||||
|0217537f717e|ckan-docker-apache |/docker-entrypoint.…|6 minutes ago |Up 4 minutes|80/tcp,0.0.0.0:80->80/tcp | apache |
|
||||
|0217537f717e|ckan-docker-nginx |/docker-entrypoint.…|6 minutes ago |Up 4 minutes|80/tcp,0.0.0.0:80->80/tcp,0.0.0.0:8443->443/tcp | nginx |
|
||||
|7b06ab2e060a|ckan-docker-ckan|/srv/app/start_ckan…|6 minutes ago |Up 5 minutes (healthy)|0.0.0.0:5000->5000/tcp|ckan | |
|
||||
|1b8d9789c29a|redis:7-alpine |docker-entrypoint.s…|6 minutes ago |Up 4 minutes (healthy)|6379/tcp |redis | |
|
||||
|7f162741254d|ckan/ckan-solr:2.9-solr8-spatial |docker-entrypoint.s…|6 minutes ago |Up 4 minutes (healthy)|8983/tcp |solr | |
|
||||
|
@ -345,36 +344,51 @@ command: `python -m pdb /usr/lib/ckan/venv/bin/ckan --config /srv/app/ckan.ini r
|
|||
The Datastore database and user is created as part of the entrypoint scripts for the db container.
|
||||
|
||||
|
||||
### Apache HTTP Server
|
||||
The default Docker Compose configuration ([`docker-compose.yml`](/docker-compose.yml)) uses an httpd image as the front-end. It has two routes for the ckan (default location: `/catalog`) and ckan-pycsw (default location: `/csw`) services.
|
||||
|
||||
Both web locations can be modified in the `.env` file:
|
||||
```ini
|
||||
...
|
||||
|
||||
# Apache HTTP Server
|
||||
APACHE_VERSION=2.4
|
||||
APACHE_PORT=80
|
||||
APACHE_LOG_DIR=/var/log/apache
|
||||
APACHE_SERVER_NAME=mjanez-cautious-lamp-4pjq9vpg967hq447-80.preview.app.github.dev
|
||||
# Check CKAN__ROOT_PATH and CKANEXT__DCAT__BASE_URI. If you don't need to use domain locations, it is better to use the nginx configuration. Leave blank or use the root `/`.
|
||||
APACHE_CKAN_LOCATION=/catalog
|
||||
APACHE_PYCSW_LOCATION=/csw
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
### NGINX
|
||||
>**Warning**<br>
|
||||
> The [nginx docker compose file](/docker-compose.nginx.yml) only deploys the CKAN service, not ckan-pycsw.
|
||||
The default Docker Compose configuration ([`docker-compose.yml`](/docker-compose.yml)) uses an NGINX image as the front-end (ie: reverse proxy). It includes HTTPS running on port number 8443 and an HTTP port (81). A "self-signed" SSL certificate is generated beforehand and the server certificate and key files are included. The NGINX `server_name` (ENV: `PROXY_SERVER_NAME`) directive and the `CN` field in the SSL certificate have been both set to 'localhost'. This should obviously not be used for production.
|
||||
|
||||
The nginx Docker Compose configuration ([`docker-compose.nginx.yml`](/docker-compose.nginx.yml)) uses an NGINX image as the front-end (ie: reverse proxy). It includes HTTPS running on port number 8443 and an HTTP port (81). A "self-signed" SSL certificate is generated beforehand and the server certificate and key files are included. The NGINX `server_name` directive and the `CN` field in the SSL certificate have been both set to 'localhost'. This should obviously not be used for production.
|
||||
The proxy locations, ports and other NGINX options can be modified in the `.env` file:
|
||||
```ini
|
||||
# Host Ports
|
||||
NGINX_PORT_HOST=81
|
||||
NGINX_SSLPORT_HOST=8443
|
||||
|
||||
# NGINX
|
||||
NGINX_PORT=80
|
||||
NGINX_SSLPORT=443
|
||||
NGINX_LOG_DIR=/var/log/nginx
|
||||
|
||||
# Check CKAN__ROOT_PATH and CKANEXT__DCAT__BASE_URI. If you don't need to use domain locations, it is better to use the nginx configuration. Leave blank or use the root `/`.
|
||||
PROXY_SERVER_NAME=192.168.68.106
|
||||
PROXY_CKAN_LOCATION=/catalog
|
||||
PROXY_PYCSW_LOCATION=/csw
|
||||
```
|
||||
|
||||
Creating the SSL cert and key files as follows:
|
||||
`openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=DE/ST=Berlin/L=Berlin/O=None/CN=localhost" -keyout ckan-local.key -out ckan-local.crt`
|
||||
The `ckan-local.*` files will then need to be moved into the nginx/setup/ directory
|
||||
|
||||
|
||||
### Apache HTTP Server
|
||||
The Docker Compose configuration ([`docker-compose.apache.yml`](/docker-compose.apache.yml)) uses an httpd image as the front-end. It has two routes for the ckan (default location: `/catalog`) and ckan-pycsw (default location: `/csw`) services.
|
||||
|
||||
The proxy locations, ports and other Apache Web Server options can be modified in the `.env` file:
|
||||
```ini
|
||||
# Host Ports
|
||||
APACHE_PORT_HOST=81
|
||||
|
||||
# Apache HTTP Server
|
||||
APACHE_VERSION=2.4-alpine
|
||||
APACHE_PORT=80
|
||||
APACHE_LOG_DIR=/var/log/apache
|
||||
|
||||
# Check CKAN__ROOT_PATH and CKANEXT__DCAT__BASE_URI. If you don't need to use domain locations, it is better to use the nginx configuration. Leave blank or use the root `/`.
|
||||
PROXY_SERVER_NAME=192.168.68.106
|
||||
PROXY_CKAN_LOCATION=/catalog
|
||||
PROXY_PYCSW_LOCATION=/csw
|
||||
```
|
||||
|
||||
|
||||
### envvars
|
||||
The ckanext-envvars extension is used in the CKAN Docker base repo to build the base images.
|
||||
This extension checks for environmental variables conforming to an expected format and updates the corresponding CKAN config settings with its value.
|
||||
|
|
|
@ -8,12 +8,12 @@ ENV APACHE_PORT=80
|
|||
ENV APACHE_LOG_DIR=/var/log/apache
|
||||
ENV APACHE_ROOT=/usr/local/apache2
|
||||
ENV APACHE_DOCUMENT_ROOT=${APACHE_ROOT}/htdocs
|
||||
ENV APACHE_SERVER_NAME=localhost
|
||||
ENV PROXY_SERVER_NAME=localhost
|
||||
|
||||
ENV APACHE_CKAN_LOCATION=/
|
||||
ENV APACHE_PYCSW_LOCATION=/csw
|
||||
ENV APACHE_PYCSW_PROXY_PASS=http://${PYCSW_CONTAINER_NAME}:${PYCSW_PORT_HOST}
|
||||
ENV APACHE_CKAN_PROXY_PASS=http://${CKAN_CONTAINER_NAME}:${CKAN_PORT_HOST}
|
||||
ENV PROXY_CKAN_LOCATION=/catalog
|
||||
ENV PROXY_PYCSW_LOCATION=/csw
|
||||
ENV PROXY_PYCSW_PROXY_PASS=http://${PYCSW_CONTAINER_NAME}:${PYCSW_PORT_HOST}
|
||||
ENV PROXY_CKAN_PROXY_PASS=http://${CKAN_CONTAINER_NAME}:${CKAN_PORT_HOST}
|
||||
|
||||
RUN mkdir -p ${APACHE_LOG_DIR}
|
||||
|
||||
|
|
|
@ -224,18 +224,18 @@ Group www-data
|
|||
# virtual host being defined.
|
||||
#
|
||||
<VirtualHost *:${APACHE_PORT}>
|
||||
<Location ${APACHE_CKAN_LOCATION}>
|
||||
ProxyPass ${APACHE_CKAN_PROXY_PASS}
|
||||
ProxyPassReverse ${APACHE_CKAN_PROXY_PASS}
|
||||
<Location ${PROXY_CKAN_LOCATION}>
|
||||
ProxyPass ${PROXY_CKAN_PROXY_PASS}
|
||||
ProxyPassReverse ${PROXY_CKAN_PROXY_PASS}
|
||||
</Location>
|
||||
|
||||
<Location ${APACHE_PYCSW_LOCATION}>
|
||||
ProxyPass ${APACHE_PYCSW_PROXY_PASS}
|
||||
ProxyPassReverse ${APACHE_PYCSW_PROXY_PASS}
|
||||
<Location ${PROXY_PYCSW_LOCATION}>
|
||||
ProxyPass ${PROXY_PYCSW_PROXY_PASS}
|
||||
ProxyPassReverse ${PROXY_PYCSW_PROXY_PASS}
|
||||
</Location>
|
||||
|
||||
Protocols h2 http/1.1
|
||||
ServerName ${APACHE_SERVER_NAME}
|
||||
ServerName ${PROXY_SERVER_NAME}
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot ${APACHE_DOCUMENT_ROOT}
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
|
|
|
@ -52,7 +52,7 @@ RUN echo ${TZ} > /etc/timezone && \
|
|||
# Used to configure the container environment by setting environment variables, creating users, running initialization scripts, .etc
|
||||
COPY docker-entrypoint.d/* /docker-entrypoint.d/
|
||||
|
||||
# Update who.ini with APACHE_CKAN_LOCATION
|
||||
# Update who.ini with PROXY_CKAN_LOCATION
|
||||
COPY setup/who.ini ${APP_DIR}/
|
||||
|
||||
# Apply any patches needed to CKAN core
|
||||
|
|
|
@ -48,7 +48,7 @@ RUN echo ${TZ} > /etc/timezone && \
|
|||
# Used to configure the container environment by setting environment variables, creating users, running initialization scripts, .etc
|
||||
COPY docker-entrypoint.d/* /docker-entrypoint.d/
|
||||
|
||||
# Update who.ini with APACHE_CKAN_LOCATION
|
||||
# Update who.ini with PROXY_CKAN_LOCATION
|
||||
COPY setup/who.ini ${APP_DIR}/
|
||||
|
||||
# Override start_ckan.sh with DEV sh
|
||||
|
|
|
@ -13,7 +13,7 @@ RUN if ! [ /usr/share/zoneinfo/${TZ} -ef /etc/localtime ]; then \
|
|||
# Used to configure the container environment by setting environment variables, creating users, running initialization scripts, .etc
|
||||
COPY docker-entrypoint.d/* /docker-entrypoint.d/
|
||||
|
||||
# Update who.ini with APACHE_CKAN_LOCATION
|
||||
# Update who.ini with PROXY_CKAN_LOCATION
|
||||
COPY setup/who.ini ${APP_DIR}/
|
||||
|
||||
# Apply any patches needed to CKAN core
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Update who.ini when exists APACHE_CKAN_LOCATION
|
||||
# Update who.ini when exists PROXY_CKAN_LOCATION
|
||||
echo "Update who.ini"
|
||||
if [ -n "$APACHE_CKAN_LOCATION" ] && [ "$APACHE_CKAN_LOCATION" != "/" ]; then \
|
||||
sed -i "s|\${WHO_LOCATION}|$APACHE_CKAN_LOCATION|g" ${APP_DIR}/who.ini; \
|
||||
else \
|
||||
sed -i "s|\${WHO_LOCATION}|/|g" ${APP_DIR}/who.ini; \
|
||||
if [ -n "$PROXY_CKAN_LOCATION" ] && [ "$PROXY_CKAN_LOCATION" != "/" ]; then
|
||||
sed -i "s|\${WHO_LOCATION}|$PROXY_CKAN_LOCATION|g" "${APP_DIR}/who.ini";
|
||||
else
|
||||
# Check if the value is exactly "/"
|
||||
if [ "$PROXY_CKAN_LOCATION" = "/" ]; then
|
||||
sed -i "s|\${WHO_LOCATION}||g" "${APP_DIR}/who.ini";
|
||||
else
|
||||
# Handle the case when $PROXY_CKAN_LOCATION is empty or not set
|
||||
sed -i "s|\${WHO_LOCATION}|/|g" "${APP_DIR}/who.ini";
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
# With NGINX and without ckan-pycsw
|
||||
version: "3"
|
||||
|
||||
volumes:
|
||||
|
@ -8,10 +7,10 @@ volumes:
|
|||
|
||||
services:
|
||||
|
||||
nginx:
|
||||
container_name: ${NGINX_CONTAINER_NAME}
|
||||
apache:
|
||||
container_name: ${APACHE_CONTAINER_NAME}
|
||||
build:
|
||||
context: nginx/
|
||||
context: apache/
|
||||
dockerfile: Dockerfile
|
||||
env_file:
|
||||
- .env
|
||||
|
@ -24,8 +23,8 @@ services:
|
|||
ckan:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "0.0.0.0:${NGINX_PORT_HOST}:${NGINX_PORT}"
|
||||
- "0.0.0.0:${NGINX_SSLPORT_HOST}:${NGINX_SSLPORT}"
|
||||
- "0.0.0.0:${APACHE_PORT_HOST}:${APACHE_PORT}"
|
||||
restart: on-failure:3
|
||||
|
||||
ckan:
|
||||
container_name: ${CKAN_CONTAINER_NAME}
|
||||
|
@ -52,7 +51,31 @@ services:
|
|||
- ckan_storage:/var/lib/ckan
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-qO", "/dev/null", "http://localhost:5000"]
|
||||
test: ["CMD", "wget", "-qO", "/dev/null", "http://localhost:${CKAN_PORT}"]
|
||||
|
||||
pycsw:
|
||||
container_name: ${PYCSW_CONTAINER_NAME}
|
||||
build:
|
||||
context: ckan-pycsw/
|
||||
dockerfile: Dockerfile
|
||||
env_file:
|
||||
- .env
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "100m"
|
||||
max-file: "10"
|
||||
depends_on:
|
||||
ckan:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "0.0.0.0:${PYCSW_PORT_HOST}:${PYCSW_PORT}"
|
||||
volumes:
|
||||
- ./log:${APP_DIR}/log
|
||||
- ./metadata:${APP_DIR}/metadata
|
||||
restart: on-failure:3
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-qO", "/dev/null", "http://localhost:${PYCSW_PORT}"]
|
||||
|
||||
db:
|
||||
container_name: ${POSTGRESQL_CONTAINER_NAME}
|
||||
|
@ -65,13 +88,13 @@ services:
|
|||
- DATASTORE_READONLY_PASSWORD=${DATASTORE_READONLY_PASSWORD}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- PGDATA=/var/lib/postgresql/data/db
|
||||
volumes:
|
||||
- pg_data:/var/lib/postgresql/data
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "100m"
|
||||
max-file: "10"
|
||||
volumes:
|
||||
- pg_data:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "-U", "ckan"]
|
|
@ -6,11 +6,10 @@ volumes:
|
|||
solr_data:
|
||||
|
||||
services:
|
||||
|
||||
apache:
|
||||
container_name: ${APACHE_CONTAINER_NAME}
|
||||
nginx:
|
||||
container_name: ${NGINX_CONTAINER_NAME}
|
||||
build:
|
||||
context: apache/
|
||||
context: nginx/
|
||||
dockerfile: Dockerfile
|
||||
env_file:
|
||||
- .env
|
||||
|
@ -23,8 +22,8 @@ services:
|
|||
ckan:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "0.0.0.0:${APACHE_PORT_HOST}:${APACHE_PORT}"
|
||||
restart: on-failure:3
|
||||
- "0.0.0.0:${NGINX_PORT_HOST}:${NGINX_PORT}"
|
||||
- "0.0.0.0:${NGINX_SSLPORT_HOST}:${NGINX_SSLPORT}"
|
||||
|
||||
ckan:
|
||||
container_name: ${CKAN_CONTAINER_NAME}
|
||||
|
|
|
@ -6,11 +6,10 @@ volumes:
|
|||
solr_data:
|
||||
|
||||
services:
|
||||
|
||||
apache:
|
||||
container_name: ${APACHE_CONTAINER_NAME}
|
||||
nginx:
|
||||
container_name: ${NGINX_CONTAINER_NAME}
|
||||
build:
|
||||
context: apache/
|
||||
context: nginx/
|
||||
dockerfile: Dockerfile
|
||||
env_file:
|
||||
- .env
|
||||
|
@ -23,8 +22,8 @@ services:
|
|||
ckan:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "0.0.0.0:${APACHE_PORT_HOST}:${APACHE_PORT}"
|
||||
restart: on-failure:3
|
||||
- "0.0.0.0:${NGINX_PORT_HOST}:${NGINX_PORT}"
|
||||
- "0.0.0.0:${NGINX_SSLPORT_HOST}:${NGINX_SSLPORT}"
|
||||
|
||||
ckan:
|
||||
container_name: ${CKAN_CONTAINER_NAME}
|
||||
|
|
|
@ -1,11 +1,24 @@
|
|||
FROM nginx:stable-alpine
|
||||
|
||||
ENV NGINX_DIR=/etc/nginx
|
||||
ENV CKAN_PORT_HOST=5000
|
||||
ENV PYCSW_PORT_HOST=8000
|
||||
ENV PYCSW_CONTAINER_NAME=pycsw
|
||||
ENV CKAN_CONTAINER_NAME=ckan
|
||||
ENV PROXY_SERVER_NAME=localhost
|
||||
ENV PROXY_CKAN_LOCATION=/catalog
|
||||
ENV PROXY_PYCSW_LOCATION=/csw
|
||||
ENV PROXY_PYCSW_PROXY_PASS=http://${PYCSW_CONTAINER_NAME}:${PYCSW_PORT_HOST}
|
||||
ENV PROXY_CKAN_PROXY_PASS=http://${CKAN_CONTAINER_NAME}:${CKAN_PORT_HOST}
|
||||
|
||||
ENV NGINX_PORT=80
|
||||
ENV NGINX_LOG_DIR=/var/log/nginx
|
||||
ENV NGINX_DIR=/etc/nginx
|
||||
|
||||
RUN mkdir -p ${NGINX_LOG_DIR}
|
||||
|
||||
COPY setup/nginx.conf ${NGINX_DIR}/nginx.conf
|
||||
COPY setup/index.html /usr/share/nginx/html/index.html
|
||||
COPY setup/default.conf ${NGINX_DIR}/conf.d/
|
||||
COPY setup/default.conf.template ${NGINX_DIR}/templates/default.conf.templateç
|
||||
|
||||
RUN mkdir -p ${NGINX_DIR}/certs
|
||||
COPY setup/ckan-local.* ${NGINX_DIR}/certs/
|
||||
|
|
|
@ -1,30 +1,32 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFIDCCAwgCCQDr3dGZoSvqMDANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJE
|
||||
RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xDTALBgNVBAoMBE5v
|
||||
bmUxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yMzAzMzEwMjM1MjZaFw0yNDAzMzAw
|
||||
MjM1MjZaMFIxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcM
|
||||
BkJlcmxpbjENMAsGA1UECgwETm9uZTESMBAGA1UEAwwJbG9jYWxob3N0MIICIjAN
|
||||
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApej5FEF4lCOAmmUaAr67w6Go2XZO
|
||||
crV2UoWbJQq+aC688XpSX5MaxBVK7r4MQGvwC0u/5aN50fyGQBWGeiY6/27MbGHA
|
||||
fimLtGAmHf5ys4FYtD71YYV0ekUMvlTV1flV3gdM3JItlkXR8ukqIb6WlAGv4vS3
|
||||
31QdoUyd7bGbCMmtDJ2ecnSlO5U0l9Udoqz4+cDPUMWMc1rXw9DfK/mzm+KR3iW+
|
||||
QdWwbWj+Crd/aBKiofKIscq2svRfcVisxSbPr4ib1iMEAxes3nt2cBYNQe8H2OVh
|
||||
SHbskKtaVgG5d+X+f/Mo+P6/1wrqY1JBgkegWkpcaz5mlT4tjsiudfmKsRRnKqHP
|
||||
m5qohWBZxH2MDWX1ggJsziI546a5Y0lkvazql8QUd44X/vrWnx37sCn50Dj8DRAf
|
||||
xtzNAC4doO+nIS+NC964yr6Ps4NrZE++WP5Ry6VUKhl46JSRkg6vtc27ZRrGn6LS
|
||||
AmWU/Ob6/9UaPQkWZ3A/iDnkrkBflM6wdaD/EQmb5LLou84dhZCivqEJ6/5TdB3c
|
||||
8w5muTQY2SLY9JmvECNQpfviD1IdXq7zqeH23L/hgE9i3GrYGWqGc9E3cjNht8Qt
|
||||
hF7WbRaomzbjH6ChZTtiSEw3wtf6bTLKuJjWCBDbp+GypyfDWrvJI2UFVwtH5QMv
|
||||
HYvxG4t+u+E6F2MCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAQcFH6iKXcErUuPJv
|
||||
N+EdDfJh8CTvbqnp7SXOBQ2Q66NhsTZXPrpyOzT3APoeineWhwt7YZF59m02O1Ek
|
||||
yS2qVEdAI9vDgmRvR6ryRsaEkLvnbhfTsBkN56c2oLTxqHBHooAyBKVIl0rSplW9
|
||||
EYhZ9t+08QNd/2unEipgTMFUM+JIMMzseKDwrug97tGsCftIPeWddkPchT309Lwr
|
||||
ECl2JsXX4t67oNR54hqRRvxyriSx/E8BF7rupsnaGNdNPPASoBbGVGEWumUutWMh
|
||||
PzlkyOgpl5fZ44WqYOBvBeLGGPTkM3uoaySv6GNOAxFsXJfHXCq59TL93LRn4RKs
|
||||
rik07ZabYa95JFAPUUSzMpplU4RCpE6r+MFceb1WMrDpK/4zoLLeIwmlwiHsrg/6
|
||||
L0tN1/RLVQwvpxiVqlmETlyDmqFC+McURNU1ZJU2V8efQTWhDVnB7rNVefQsbTLN
|
||||
5jaWiKMKQxva2Skf1jgVT9JOfYYCRlHpryOp9yIrqQqVxlaaDJz/Jm91Pt4QhCDj
|
||||
VhSMDYVMFtE/ylMbB1qR3MJBw0xCCG4zdZpUzvFfR6/wQ5FZ4DvXsbYnsxX/JhgV
|
||||
sTqxkdnhhR0UsxuHyxGWVPPxS+5IZdxVETcjrMVeaK9PAHyBBSI4DQHYIJWoyZ3m
|
||||
y9oQx2IvfVXpGptadU5EKWM6210=
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,52 +1,52 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
E0CmRHNQumr+KBM8UT4YtWA+recgbtA=
|
||||
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
|
||||
iycJUgmdCcBC+PcCS7b6jI+Rp29QaKw=
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
|
@ -1,19 +1,28 @@
|
|||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
server_name localhost;
|
||||
listen ${NGINX_PORT};
|
||||
listen [::]:${NGINX_PORT};
|
||||
listen ${NGINX_SSLPORT} ssl;
|
||||
listen [::]:${NGINX_SSLPORT} ssl;
|
||||
server_name ${PROXY_SERVER_NAME};
|
||||
ssl_certificate /etc/nginx/certs/ckan-local.crt;
|
||||
ssl_certificate_key /etc/nginx/certs/ckan-local.key;
|
||||
|
||||
#access_log /var/log/nginx/host.access.log main;
|
||||
|
||||
location / {
|
||||
proxy_pass http://ckan:5000/;
|
||||
location ${PROXY_CKAN_LOCATION} {
|
||||
proxy_pass ${PROXY_CKAN_PROXY_PASS}/;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $host;
|
||||
proxy_cache_bypass $cookie_auth_tkt;
|
||||
proxy_no_cache $cookie_auth_tkt;
|
||||
proxy_cache_valid 30m;
|
||||
proxy_cache_key $host$scheme$proxy_host$request_uri;
|
||||
}
|
||||
|
||||
location ${PROXY_PYCSW_LOCATION} {
|
||||
proxy_pass ${PROXY_PYCSW_PROXY_PASS}/;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $host;
|
||||
#proxy_cache cache;
|
||||
proxy_cache_bypass $cookie_auth_tkt;
|
||||
proxy_no_cache $cookie_auth_tkt;
|
||||
proxy_cache_valid 30m;
|
|
@ -0,0 +1,124 @@
|
|||
# Base
|
||||
APP_DIR=/srv/app
|
||||
|
||||
# Container names
|
||||
NGINX_CONTAINER_NAME=nginx
|
||||
REDIS_CONTAINER_NAME=redis
|
||||
POSTGRESQL_CONTAINER_NAME=db
|
||||
SOLR_CONTAINER_NAME=solr
|
||||
CKAN_CONTAINER_NAME=ckan
|
||||
WORKER_CONTAINER_NAME=ckan-worker
|
||||
|
||||
# Host Ports
|
||||
CKAN_PORT_HOST=5000
|
||||
NGINX_PORT_HOST=80
|
||||
NGINX_SSLPORT_HOST=8443
|
||||
|
||||
# Solr
|
||||
SOLR_IMAGE_VERSION=2.9-solr8-spatial
|
||||
SOLR_PORT=8983
|
||||
CKAN_SOLR_URL=http://solr:${SOLR_PORT}/solr/ckan
|
||||
TEST_CKAN_SOLR_URL=http://solr:${SOLR_PORT}/solr/ckan
|
||||
|
||||
# Redis
|
||||
REDIS_VERSION=7-alpine
|
||||
CKAN_REDIS_URL=redis://redis:6379/1
|
||||
TEST_CKAN_REDIS_URL=redis://redis:6379/1
|
||||
|
||||
# NGINX
|
||||
NGINX_PORT=80
|
||||
NGINX_SSLPORT=443
|
||||
|
||||
# CKAN databases
|
||||
POSTGRES_USER=ckan
|
||||
POSTGRES_PASSWORD=ckan
|
||||
DATASTORE_READONLY_USER=datastore_ro
|
||||
DATASTORE_READONLY_PASSWORD=datastore
|
||||
POSTGRES_HOST=db
|
||||
CKAN_SQLALCHEMY_URL=postgresql://ckan:ckan@db/ckan
|
||||
CKAN_DATASTORE_WRITE_URL=postgresql://ckan:ckan@db/datastore
|
||||
CKAN_DATASTORE_READ_URL=postgresql://datastore_ro:datastore@db/datastore
|
||||
|
||||
# Test database connections
|
||||
TEST_CKAN_SQLALCHEMY_URL=postgres://ckan:ckan@db/ckan_test
|
||||
TEST_CKAN_DATASTORE_WRITE_URL=postgresql://ckan:ckan@db/datastore_test
|
||||
TEST_CKAN_DATASTORE_READ_URL=postgresql://datastore_ro:datastore@db/datastore_test
|
||||
|
||||
# CKAN core
|
||||
CKAN_VERSION=2.9.9
|
||||
CKAN_SITE_ID=default
|
||||
CKAN_SITE_URL=http://localhost:5000
|
||||
CKAN_PORT=5000
|
||||
CKAN___BEAKER__SESSION__SECRET=CHANGE_ME
|
||||
# See https://docs.ckan.org/en/latest/maintaining/configuration.html#api-token-settings
|
||||
CKAN___API_TOKEN__JWT__ENCODE__SECRET=string:CHANGE_ME
|
||||
CKAN___API_TOKEN__JWT__DECODE__SECRET=string:CHANGE_ME
|
||||
CKAN_SYSADMIN_NAME=ckan_admin
|
||||
CKAN_SYSADMIN_PASSWORD=test1234
|
||||
CKAN_SYSADMIN_EMAIL=your_email@example.com
|
||||
CKAN_STORAGE_PATH=/var/lib/ckan
|
||||
CKAN_SMTP_SERVER=smtp.corporateict.domain:25
|
||||
CKAN_SMTP_STARTTLS=True
|
||||
CKAN_SMTP_USER=user
|
||||
CKAN_SMTP_PASSWORD=pass
|
||||
CKAN_SMTP_MAIL_FROM=ckan@localhost
|
||||
TZ=UTC
|
||||
## Customize which text formats the text_view plugin will show
|
||||
CKAN__PREVIEW__JSON_FORMATS="json jsonld"
|
||||
# html htm rdf+xml owl+xml xml n3 n-triples turtle plain atom csv tsv rss txt json
|
||||
CKAN__PREVIEW__XML_FORMATS="xml rdf rdf+xml owl+xml atom rss turtle ttl n3 n-triples"
|
||||
CKAN__PREVIEW__TEXT_FORMATS="text plain text/plain text/turtle csv tsv rss txt json"
|
||||
CKAN__PREVIEW__LOADABLE="html htm rdf+xml owl+xml xml n3 n-triples turtle plain atom csv tsv rss txt json arcgis_rest"
|
||||
|
||||
## Resource Proxy settings
|
||||
### Preview size limit, default: 1MB
|
||||
CKAN__RESOURCE_PROXY__MAX_FILE_SIZE=50048576
|
||||
## Size of chunks to read/write__
|
||||
CKAN__RESOURCE_PROXY__CHUNK_SIZE=4096
|
||||
## Default timeout for fetching proxied items
|
||||
CKAN__RESOURCE_PROXY__TIMEOUT=10
|
||||
CKAN__VIEWS__DEFAULT_VIEWS="image_view webpage_view text_view recline_view wmts_view geojson_view geo_view shp_view pdf_view"
|
||||
|
||||
# Localization
|
||||
CKAN__LOCALE_DEFAULT="en"
|
||||
CKAN__LOCALE_ORDER="en es pt_BR ja it cs_CZ ca fr el sv sr sr@latin no sk fi ru de pl nl bg ko_KR hu sa sl lv"
|
||||
|
||||
# Extensions
|
||||
CKAN__PLUGINS="envvars stats text_view image_view webpage_view recline_view resourcedictionary datastore xloader harvest ckan_harvester spatial_metadata spatial_query spatial_harvest_metadata_api csw_harvester waf_harvester doc_harvester resource_proxy geo_view geojson_view wmts_view shp_view dcat dcat_rdf_harvester dcat_json_harvester dcat_json_interface scheming_datasets scheming_groups scheming_organizations pdf_view pages"
|
||||
|
||||
# ckanext-harvest
|
||||
CKAN__HARVEST__MQ__TYPE=redis
|
||||
CKAN__HARVEST__MQ__HOSTNAME=redis
|
||||
CKAN__HARVEST__MQ__PORT=6379
|
||||
CKAN__HARVEST__MQ__REDIS_DB=1
|
||||
|
||||
# ckanext-xloader
|
||||
CKANEXT__XLOADER__API_TOKEN=api_token
|
||||
CKANEXT__XLOADER__JOBS__DB_URI=postgresql://ckan:ckan@db/ckan
|
||||
|
||||
# ckanext-dcat
|
||||
CKANEXT__DCAT__BASE_URI=https://localhost:5000/
|
||||
CKANEXT__DCAT__RDF_PROFILES="euro_dcat_ap_2 euro_dcat_ap"
|
||||
|
||||
# ckanext-scheming: setup_scheming.sh
|
||||
SCHEMA_CKANEXT_SCHEMING_DATASET_SCHEMA="ckanext.scheming:ckan_geodcatap.yaml"
|
||||
SCHEMA_CKANEXT_SCHEMING_GROUP_SCHEMAS="ckanext.scheming:ckan_group_geodcatap.json"
|
||||
SCHEMA_CKANEXT_SCHEMING_ORGANIZATION_SCHEMAS="ckanext.scheming:ckan_org_geodcatap.json"
|
||||
SCHEMA_CKANEXT_SCHEMING_PRESETS="ckanext.scheming:presets.json"
|
||||
|
||||
# ckanext-spatial (Solr Backend - solr8-spatial)
|
||||
CKANEXT__SPATIAL__SEARCH_BACKEND=solr-bbox
|
||||
CKAN__SPATIAL__SRID=3857
|
||||
CKANEXT__SPATIAL__COMMON_MAP__TYPE=custom
|
||||
CKANEXT__SPATIAL__COMMON_MAP__CUSTOM__URL=https://rts.larioja.org/mapa-base/rioja/{z}/{x}/{y}.png
|
||||
CKANEXT__SPATIAL__COMMON_MAP__ATTRIBUTION='Servicios de Teselas. <a href="https://www.idee.es/">IDEE</a>, bajo <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>.'
|
||||
|
||||
# ckanext-geoview
|
||||
CKANEXT__GEOVIEW__GEOJSON__MAX_FILE_SIZE=100000000
|
||||
CKANEXT__GEOVIEW__OL_VIEWER__FORMATS="wms wfs geojson gml kml"
|
||||
CKANEXT__GEOVIEW__SHP_VIEWER__SRID=3857
|
||||
CKANEXT__GEOVIEW__SHP_VIEWER__ENCODING=UTF-8
|
||||
|
||||
#TODO: ckanext-sparql - Not implemented yet
|
||||
CKANEXT__SPARQL__ENDPOINT_URL=http://dbpedia.org/sparql
|
||||
CKANEXT__SPARQL__HIDE_ENDPOINT_URL=False
|
|
@ -37,10 +37,10 @@ NGINX_SSLPORT=443
|
|||
APACHE_VERSION=2.4-alpine
|
||||
APACHE_PORT=80
|
||||
APACHE_LOG_DIR=/var/log/apache
|
||||
APACHE_SERVER_NAME=localhost
|
||||
PROXY_SERVER_NAME=localhost
|
||||
# Check CKAN__ROOT_PATH and CKANEXT__DCAT__BASE_URI. If you don't need to use domain locations, it is better to use the nginx configuration.
|
||||
APACHE_CKAN_LOCATION=/catalog
|
||||
APACHE_PYCSW_LOCATION=/csw
|
||||
PROXY_CKAN_LOCATION=/catalogcatalog
|
||||
PROXY_PYCSW_LOCATION=/csw
|
||||
|
||||
# pycsw
|
||||
PYCSW_PORT=8000
|
||||
|
|
Loading…
Reference in New Issue