### Please note that this re-purposed CKAN Docker repo is a WORK IN PROGRESS ###
### It should not be used to install CKAN via Docker until this page is updated ###
-------------------------------------
(From Adria)
Be limited in scope, and act as a base that users can extend to their own needs
Be opinionated, and provide one way to do things
Be automatically tested
-------------------------------------
should we have an nginx container included? maybe just instructions on how to include one
ARG should be used for sensitive variables so as to keep the values of these variables
out of the build and hence will not show with an "inspect image" command
Do we pre-build a CKAN image and use that (and extend) as the base image OR
just build it from scratch and while saving to storage what we need to
To use local storage for the ckan.ini file and the CKAN src code, do the following:
# docker-compose up -d --build
# mkdir local
# docker cp ckan:/srv/app/ckan.ini ./local/ckan.ini
# docker cp ckan:/srv/app/src ./local/src
Stop/Remove ckan container
Start ckan container as follows
Use a bind mount for the config file (ckan.ini)
# docker run -p 0.0.0.0:5000:5000 --net ckan-docker_default --hostname ckan --name ckan \
--env-file=./environ --mount type=bind,source=$(pwd)/local/ckan.ini,target=/srv/app/ckan.ini \
--mount type=bind,source=$(pwd)/local/src,target=/srv/app/src \
-d ckan-docker_ckan
Maybe include a script to replace docker-compose if required
Dev Mode (OKFN)
The differences between Docker dev abd Docker base is as the following:
docker-compose.dev.yml
solr: explicitly puts in ports (8983:8983)
db: Doesn't pass in environment and arg values
ckan: has extra volume bind mount (./src:/srv/app/src_extensions)
Dockerfile.dev
Takes the base image and
Adds a new directory (SRC_EXTENSIONS_DIR=/srv/app/src_extensions)
installs libffi-dev
installs dev-requirements.txt
runs different start script (start_ckan_development.sh) which installs any extension located in SRC_EXTENSIONS_DIR
runs a typical Dev install
pip install -r pip-requirements.txt
pip install -r requirements.txt
pip install -r dev-requirements.txt
python3 setup.py develop
ckan config-tool test.ini
ckan config-tool $CKAN_INI -s DEFAULT "debug = true"
ckan config-tool $CKAN_INI "ckan.plugins = $CKAN__PLUGINS"
ckan config-tool $SRC_DIR/ckan/test-core.ini \
"sqlalchemy.url = $TEST_CKAN_SQLALCHEMY_URL" \
"ckan.datastore.write_url = $TEST_CKAN_DATASTORE_WRITE_URL" \
"ckan.datastore.read_url = $TEST_CKAN_DATASTORE_READ_URL" \
"solr_url = $TEST_CKAN_SOLR_URL" \
"ckan.redis.url = $TEST_CKAN_REDIS_URL"
All other steps are similar to the base Dockerfile