diff --git a/Dockerfile b/Dockerfile index 1ee8ba66211..bf92f5960d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,6 +32,7 @@ ENV CKAN_STORAGE_PATH=/var/lib/ckan # Build-time variables specified by docker-compose.yml / .env ARG CKAN_SITE_URL +ARG DEVELOPER_SETUP=false # Create ckan user RUN useradd -r -u 900 -m -c "ckan account" -d $CKAN_HOME -s /bin/false ckan @@ -53,6 +54,14 @@ RUN ckan-pip install -U pip && \ chmod +x /ckan-entrypoint.sh && \ chown -R ckan:ckan $CKAN_HOME $CKAN_VENV $CKAN_CONFIG $CKAN_STORAGE_PATH +RUN if [ "$DEVELOPER_SETUP" = true ] ; then \ + ckan-pip install --upgrade --no-cache-dir -r $CKAN_VENV/src/ckan/requirements.txt; \ + fi +RUN if [ "$DEVELOPER_SETUP" = true ] ; then \ + cp -v $CKAN_VENV/src/ckan/contrib/docker/ckan-tests-entrypoint.sh /ckan-entrypoint.sh; \ + chmod +x /ckan-entrypoint.sh; \ + fi + ENTRYPOINT ["/ckan-entrypoint.sh"] USER ckan diff --git a/contrib/docker/ckan-tests-entrypoint.sh b/contrib/docker/ckan-tests-entrypoint.sh new file mode 100644 index 00000000000..4945ee8a71c --- /dev/null +++ b/contrib/docker/ckan-tests-entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e + +# set_environment +# ckan-paster --plugin=ckan db init -c "${CKAN_CONFIG}/production.ini" +# exec "$@" diff --git a/contrib/docker/docker-compose.test.yml b/contrib/docker/docker-compose.test.yml new file mode 100644 index 00000000000..b1fae829912 --- /dev/null +++ b/contrib/docker/docker-compose.test.yml @@ -0,0 +1,62 @@ +# docker-compose build && docker-compose up -d +# If "docker-compose logs ckan" shows DB not ready, run "docker-compose restart ckan" a few times. +version: "3" + +volumes: + ckan_config: + ckan_home: + ckan_storage: + pg_data: + +services: + ckan: + container_name: ckan + build: + context: ../../ + args: + - CKAN_SITE_URL=ignored in tests + - DEVELOPER_SETUP=true + links: + - db + - solr + - redis + volumes: + - ckan_config:/etc/ckan + - ckan_home:/usr/lib/ckan + - ckan_storage:/var/lib/ckan + command: + - nosetests --ckan --with-pylons=test-core.ini ckan ckanext + + datapusher: + container_name: datapusher + image: clementmouchet/datapusher + ports: + - "8800:8800" + + db: + container_name: db + build: + context: ../../ + dockerfile: contrib/docker/postgresql/Dockerfile + args: + # match the creds hard-coded in test-core.ini + - POSTGRES_DB=ckan_test + - POSTGRES_USER=ckan_default + - DS_RO_PASS=pass + - POSTGRES_PASSWORD=pass + environment: + - DS_RO_PASS=pass + - POSTGRES_PASSWORD=pass + volumes: + - pg_data:/var/lib/postgresql/data + + solr: + container_name: solr + build: + context: ../../ + dockerfile: contrib/docker/solr/Dockerfile + + + redis: + container_name: redis + image: redis:latest diff --git a/contrib/docker/postgresql/Dockerfile b/contrib/docker/postgresql/Dockerfile index 82d96fd9b5e..b6ae8d43956 100644 --- a/contrib/docker/postgresql/Dockerfile +++ b/contrib/docker/postgresql/Dockerfile @@ -6,8 +6,8 @@ MAINTAINER Open Knowledge RUN echo "host all all 0.0.0.0/0 md5" >> /var/lib/postgresql/data/pg_hba.conf # Customize default user/pass/db -ENV POSTGRES_DB ckan -ENV POSTGRES_USER ckan +ARG POSTGRES_DB=ckan +ARG POSTGRES_USER=ckan ARG POSTGRES_PASSWORD ARG DS_RO_PASS