diff --git a/ckan/Dockerfile b/ckan/Dockerfile index 8f0532e7..ea891057 100644 --- a/ckan/Dockerfile +++ b/ckan/Dockerfile @@ -1,11 +1,19 @@ FROM ckan/ckan-base:2.10.1 -# Set up environment variables -ENV APP_DIR=/srv/app -ENV TZ=UTC -RUN echo ${TZ} > /etc/timezone - -# Make sure both files are not exactly the same -RUN if ! [ /usr/share/zoneinfo/${TZ} -ef /etc/localtime ]; then \ - cp /usr/share/zoneinfo/${TZ} /etc/localtime ;\ - fi ; +# Install any extensions needed by your CKAN instance +# See Dockerfile.dev for more details and examples + +# Copy custom initialization scripts +COPY docker-entrypoint.d/* /docker-entrypoint.d/ + +# Apply any patches needed to CKAN core or any of the built extensions (not the +# runtime mounted ones) +COPY patches ${APP_DIR}/patches + +RUN for d in $APP_DIR/patches/*; do \ + if [ -d $d ]; then \ + for f in `ls $d/*.patch | sort -g`; do \ + cd $SRC_DIR/`basename "$d"` && echo "$0: Applying patch $f to $SRC_DIR/`basename $d`"; patch -p1 < "$f" ; \ + done ; \ + fi ; \ + done diff --git a/ckan/Dockerfile.dev b/ckan/Dockerfile.dev index 1720f718..58dacebb 100644 --- a/ckan/Dockerfile.dev +++ b/ckan/Dockerfile.dev @@ -1,23 +1,13 @@ FROM ckan/ckan-dev:2.10.1 - -# Set up environment variables -ENV APP_DIR=/srv/app -ENV TZ=UTC -RUN echo ${TZ} > /etc/timezone - -# Make sure both files are not exactly the same -RUN if ! [ /usr/share/zoneinfo/${TZ} -ef /etc/localtime ]; then \ - cp /usr/share/zoneinfo/${TZ} /etc/localtime ;\ - fi ; - # Install any extensions needed by your CKAN instance # - Make sure to add the plugins to CKAN__PLUGINS in the .env file -# - Also make sure all extra configuration options are added to the CKAN config file (ckan.ini) -# This can be done by creating an overriding start_ckan_dev_development.sh file: -# (https://github.com/ckan/ckan-docker-base/blob/main/ckan-2.9/dev/setup/start_ckan_development.sh) ie: updating the 'ckan config-tool' lines -# For more on config-tool please see https://docs.ckan.org/en/latest/maintaining/cli.html#config-tool-tool-for-editing-options-in-a-ckan-config-file -# or using Crudini (https://github.com/pixelb/crudini) +# - Also make sure all provide all extra configuration options, either by: +# * Adding them to the .env file (check the ckanext-envvars syntax for env vars), or +# * Adding extra configuration scripts to /docker-entrypoint.d folder) to update +# the CKAN config file (ckan.ini) with the `ckan config-tool` command +# +# See README > Extending the base images for more details # # For instance: # @@ -44,9 +34,11 @@ RUN if ! [ /usr/share/zoneinfo/${TZ} -ef /etc/localtime ]; then \ # Clone the extension(s) your are writing for your own project in the `src` folder # to get them mounted in this image at runtime +# Copy custom initialization scripts +COPY docker-entrypoint.d/* /docker-entrypoint.d/ + # Apply any patches needed to CKAN core or any of the built extensions (not the # runtime mounted ones) - COPY patches ${APP_DIR}/patches RUN for d in $APP_DIR/patches/*; do \ diff --git a/ckan/docker-entrypoint.d/README.md b/ckan/docker-entrypoint.d/README.md new file mode 100644 index 00000000..27fa2922 --- /dev/null +++ b/ckan/docker-entrypoint.d/README.md @@ -0,0 +1,4 @@ +Use scripts in this folder to run extra initialization steps in your custom CKAN images. +Any file with `.sh` or `.py` extension will be executed just after the main initialization +script (`prerun.py`) is executed and just before the web server and supervisor processes are +started.