From f0a1b7de0930b31f226c6ef7890646573d1793c0 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 02:50:19 +0100 Subject: [PATCH 01/22] Solr BugFix Solr requires the same schema of ckan --- contrib/docker/solr/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/docker/solr/Dockerfile b/contrib/docker/solr/Dockerfile index 62bb161e7c1..db8c2f2ee3a 100644 --- a/contrib/docker/solr/Dockerfile +++ b/contrib/docker/solr/Dockerfile @@ -13,7 +13,7 @@ RUN mkdir -p /opt/solr/server/solr/$SOLR_CORE/data # Adding Files ADD ./solrconfig.xml \ -https://raw.githubusercontent.com/ckan/ckan/dev-v2.6/ckan/config/solr/schema.xml \ +https://raw.githubusercontent.com/ckan/ckan/master/ckan/config/solr/schema.xml \ https://raw.githubusercontent.com/apache/lucene-solr/releases/lucene-solr/6.0.0/solr/server/solr/configsets/basic_configs/conf/currency.xml \ https://raw.githubusercontent.com/apache/lucene-solr/releases/lucene-solr/6.0.0/solr/server/solr/configsets/basic_configs/conf/synonyms.txt \ https://raw.githubusercontent.com/apache/lucene-solr/releases/lucene-solr/6.0.0/solr/server/solr/configsets/basic_configs/conf/stopwords.txt \ From c2094e644387d23f38d6b26da7f192ff7bd717fe Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 03:44:09 +0100 Subject: [PATCH 02/22] EntryPoint --- contrib/docker/ckan-entrypoint.sh | 86 +++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 contrib/docker/ckan-entrypoint.sh diff --git a/contrib/docker/ckan-entrypoint.sh b/contrib/docker/ckan-entrypoint.sh new file mode 100644 index 00000000000..cb44a067513 --- /dev/null +++ b/contrib/docker/ckan-entrypoint.sh @@ -0,0 +1,86 @@ +#!/bin/sh +set -eu + +# URL for the primary database, in the format expected by sqlalchemy (required +# unless linked to a container called 'db') +: ${DATABASE_URL:=} +# URL for solr (required unless linked to a container called 'solr') +: ${SOLR_URL:=} +# URL for redis (required unless linked to a container called 'redis') +: ${REDIS_URL:=} +# Email to which errors should be sent (optional, default: none) +: ${ERROR_EMAIL:=} + +CONFIG="${CKAN_CONFIG}/ckan.ini" + +abort () { + echo "$@" >&2 + exit 1 +} + +write_config () { + ckan-paster make-config ckan "$CONFIG" + + ckan-paster --plugin=ckan config-tool "$CONFIG" -e \ + "sqlalchemy.url = ${DATABASE_URL}" \ + "solr_url = ${SOLR_URL}" \ + "ckan.redis.url = ${REDIS_URL}" \ + "ckan.storage_path = /var/lib/ckan" \ + "email_to = disabled@example.com" \ + "error_email_from = ckan@$(hostname -f)" \ + "ckan.site_url = http://localhost:5000" + + if [ -n "$ERROR_EMAIL" ]; then + sed -i -e "s&^#email_to.*&email_to = ${ERROR_EMAIL}&" "$CONFIG" + fi +} + +link_postgres_url () { + local user=$DB_ENV_POSTGRES_USER + local pass=$DB_ENV_POSTGRES_PASSWORD + local db=$DB_ENV_POSTGRES_DB + local host=$DB_PORT_5432_TCP_ADDR + local port=$DB_PORT_5432_TCP_PORT + echo "postgresql://${user}:${pass}@${host}:${port}/${db}" +} + +link_solr_url () { + local host=$SOLR_PORT_8983_TCP_ADDR + local port=$SOLR_PORT_8983_TCP_PORT + echo "http://${host}:${port}/solr/ckan" +} + +link_redis_url () { + local host=$REDIS_PORT_6379_TCP_ADDR + local port=$REDIS_PORT_6379_TCP_PORT + echo "redis://${host}:${port}/1" +} + +# If we don't already have a config file, bootstrap +if [ ! -e "$CONFIG" ]; then + + if [ -z "$DATABASE_URL" ]; then + if ! DATABASE_URL=$(link_postgres_url); then + abort "ERROR: no DATABASE_URL specified and linked container called 'db' was not found" + fi + fi + + if [ -z "$SOLR_URL" ]; then + if ! SOLR_URL=$(link_solr_url); then + abort "ERROR: no SOLR_URL specified and linked container called 'solr' was not found" + fi + fi + + if [ -z "$REDIS_URL" ]; then + if ! REDIS_URL=$(link_redis_url); then + abort "ERROR: no REDIS_URL specified and linked container called 'redis' was not found" + fi + fi + + write_config + +fi + +ckan-paster --plugin=ckan db init -c "${CKAN_CONFIG}/ckan.ini" + +exec "$@" From 59e04d6aaa3ec258968b1b0f89615ead487549b1 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 03:49:26 +0100 Subject: [PATCH 03/22] Docker File Working as expected --- Dockerfile | 66 +++++++++++++++++++----------------------------------- 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3ed6110ab2e..c9f10fc6790 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,63 +1,43 @@ -FROM phusion/baseimage:0.9.15 +FROM debian:jessie MAINTAINER Open Knowledge -# Disable SSH -RUN rm -rf /etc/service/sshd /etc/my_init.d/00_regen_ssh_host_keys.sh - -ENV HOME /root ENV CKAN_HOME /usr/lib/ckan/default ENV CKAN_CONFIG /etc/ckan/default ENV CKAN_DATA /var/lib/ckan +# docker run -d -p 80:5000 --link db:db --link redis:redis --link solr:solr ckan + # Install required packages -RUN apt-get -q -y update && \ - DEBIAN_FRONTEND=noninteractive apt-get -q -y install \ - python-minimal \ - python-dev \ +RUN apt-get -q -y update && apt-get -q -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -q -y install \ + python-dev \ + python-pip \ python-virtualenv \ - libevent-dev \ libpq-dev \ - nginx-light \ - apache2 \ - libapache2-mod-wsgi \ - postfix \ - build-essential && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -# Install CKAN -RUN virtualenv $CKAN_HOME + git-core \ + && apt-get -q clean + +# SetUp Virtual Environment CKAN RUN mkdir -p $CKAN_HOME $CKAN_CONFIG $CKAN_DATA -RUN chown www-data:www-data $CKAN_DATA +RUN virtualenv $CKAN_HOME +RUN ln -s $CKAN_HOME/bin/pip /usr/local/bin/ckan-pip +RUN ln -s $CKAN_HOME/bin/paster /usr/local/bin/ckan-paster +# SetUp Requirements ADD ./requirements.txt $CKAN_HOME/src/ckan/requirements.txt -RUN $CKAN_HOME/bin/pip install -r $CKAN_HOME/src/ckan/requirements.txt +RUN ckan-pip install --upgrade -r $CKAN_HOME/src/ckan/requirements.txt + +# SetUp CKAN ADD . $CKAN_HOME/src/ckan/ -RUN $CKAN_HOME/bin/pip install -e $CKAN_HOME/src/ckan/ +RUN ckan-pip install -e $CKAN_HOME/src/ckan/ RUN ln -s $CKAN_HOME/src/ckan/ckan/config/who.ini $CKAN_CONFIG/who.ini -ADD ./contrib/docker/apache.wsgi $CKAN_CONFIG/apache.wsgi - -# Configure apache -ADD ./contrib/docker/apache.conf /etc/apache2/sites-available/ckan_default.conf -RUN echo "Listen 8080" > /etc/apache2/ports.conf -RUN a2ensite ckan_default -RUN a2dissite 000-default - -# Configure nginx -ADD ./contrib/docker/nginx.conf /etc/nginx/nginx.conf -RUN mkdir /var/cache/nginx - -# Configure postfix -ADD ./contrib/docker/main.cf /etc/postfix/main.cf -# Configure runit -ADD ./contrib/docker/my_init.d /etc/my_init.d -ADD ./contrib/docker/svc /etc/service -CMD ["/sbin/my_init"] +# SetUp EntryPoint +COPY ./contrib/docker/ckan-entrypoint.sh /usr/local/bin/ +ENTRYPOINT ["ckan-entrypoint.sh"] # Volumes VOLUME ["/etc/ckan/default"] VOLUME ["/var/lib/ckan"] -EXPOSE 80 +EXPOSE 5000 -RUN rm -rf /tmp/* /var/tmp/* +CMD ["ckan-paster","serve","/etc/ckan/default/ckan.ini"] From 43f90c315e79aba56b87ff5e4ca39b6947380036 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 03:55:45 +0100 Subject: [PATCH 04/22] Docker-Compose and Docker-Cloud Changed --- contrib/docker/docker-cloud.yml | 5 ++++- contrib/docker/docker-compose.yml | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/contrib/docker/docker-cloud.yml b/contrib/docker/docker-cloud.yml index 1275dbfa6c1..593a52b650d 100644 --- a/contrib/docker/docker-cloud.yml +++ b/contrib/docker/docker-cloud.yml @@ -3,9 +3,12 @@ ckan: links: - db - solr + - redis ports: - - "80:80" + - "80:5000" db: image: ckan/postgresql:latest solr: image: ckan/solr:latest +redis: + image: redis:latest diff --git a/contrib/docker/docker-compose.yml b/contrib/docker/docker-compose.yml index fa722622daa..3d196b10c66 100644 --- a/contrib/docker/docker-compose.yml +++ b/contrib/docker/docker-compose.yml @@ -6,14 +6,19 @@ services: depends_on: - db - solr + - redis links: - db - solr + - redis ports: - - "80:80" + - "80:5000" db: container_name: db image: ckan/postgresql:latest solr: container_name: solr image: ckan/solr:latest + redis: + container_name: redis + image: redis:latest From 2a949a45795a26113fa503d3ef7988fff962a68e Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 20:10:18 +0100 Subject: [PATCH 05/22] Compose Up --- contrib/docker/docker-compose.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/contrib/docker/docker-compose.yml b/contrib/docker/docker-compose.yml index 3d196b10c66..19b7cb2011b 100644 --- a/contrib/docker/docker-compose.yml +++ b/contrib/docker/docker-compose.yml @@ -3,6 +3,8 @@ services: ckan: container_name: ckan image: ckan/ckan:latest + build: + context: ./../../ depends_on: - db - solr @@ -13,12 +15,19 @@ services: - redis ports: - "80:5000" + db: container_name: db image: ckan/postgresql:latest + build: + context: ./postgresql/ + solr: container_name: solr image: ckan/solr:latest + build: + context: ./solr/ + redis: container_name: redis image: redis:latest From 2c22fd303866c5798f4c318f32058c35e676706a Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 21:55:42 +0100 Subject: [PATCH 06/22] EntryPoint In / --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c9f10fc6790..6e898e09c8f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,8 +32,8 @@ RUN ckan-pip install -e $CKAN_HOME/src/ckan/ RUN ln -s $CKAN_HOME/src/ckan/ckan/config/who.ini $CKAN_CONFIG/who.ini # SetUp EntryPoint -COPY ./contrib/docker/ckan-entrypoint.sh /usr/local/bin/ -ENTRYPOINT ["ckan-entrypoint.sh"] +COPY ./contrib/docker/ckan-entrypoint.sh / +ENTRYPOINT ["/ckan-entrypoint.sh"] # Volumes VOLUME ["/etc/ckan/default"] From 6adc42a53d7517bba7d6c08a70d3402c1ee747b8 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 22:17:31 +0100 Subject: [PATCH 07/22] chmod +x --- Dockerfile | 5 +++-- contrib/docker/docker-compose.yml | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6e898e09c8f..5358fa2866f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,5 @@ +# docker build . -t ckan && docker run -d -p 80:5000 --link db:db --link redis:redis --link solr:solr ckan + FROM debian:jessie MAINTAINER Open Knowledge @@ -5,8 +7,6 @@ ENV CKAN_HOME /usr/lib/ckan/default ENV CKAN_CONFIG /etc/ckan/default ENV CKAN_DATA /var/lib/ckan -# docker run -d -p 80:5000 --link db:db --link redis:redis --link solr:solr ckan - # Install required packages RUN apt-get -q -y update && apt-get -q -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -q -y install \ python-dev \ @@ -33,6 +33,7 @@ RUN ln -s $CKAN_HOME/src/ckan/ckan/config/who.ini $CKAN_CONFIG/who.ini # SetUp EntryPoint COPY ./contrib/docker/ckan-entrypoint.sh / +RUN chmod +x /ckan-entrypoint.sh ENTRYPOINT ["/ckan-entrypoint.sh"] # Volumes diff --git a/contrib/docker/docker-compose.yml b/contrib/docker/docker-compose.yml index 19b7cb2011b..4318ffd392f 100644 --- a/contrib/docker/docker-compose.yml +++ b/contrib/docker/docker-compose.yml @@ -1,3 +1,4 @@ +# docker-compose build && docker-compose up version: '2' services: ckan: @@ -21,13 +22,19 @@ services: image: ckan/postgresql:latest build: context: ./postgresql/ + ports: + - "5432:5432" solr: container_name: solr image: ckan/solr:latest build: context: ./solr/ + ports: + - "8983:8983" redis: container_name: redis image: redis:latest + ports: + - "6379:6379" From 9fecc9634e4e8df359838841af97e47d40045c5b Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 22:26:11 +0100 Subject: [PATCH 08/22] DockerCompose --- contrib/docker/docker-compose.yml | 56 ++++++++++++------------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/contrib/docker/docker-compose.yml b/contrib/docker/docker-compose.yml index 4318ffd392f..78ca3a948fd 100644 --- a/contrib/docker/docker-compose.yml +++ b/contrib/docker/docker-compose.yml @@ -1,40 +1,28 @@ # docker-compose build && docker-compose up -version: '2' -services: - ckan: - container_name: ckan - image: ckan/ckan:latest - build: - context: ./../../ - depends_on: +ckan: + container_name: ckan + image: ckan/ckan:latest + links: - db - solr - redis - links: - - db - - solr - - redis - ports: - - "80:5000" + ports: + - "80:5000" - db: - container_name: db - image: ckan/postgresql:latest - build: - context: ./postgresql/ - ports: - - "5432:5432" +db: + container_name: db + image: ckan/postgresql:latest + ports: + - "5432:5432" + +solr: + container_name: solr + image: ckan/solr:latest + ports: + - "8983:8983" - solr: - container_name: solr - image: ckan/solr:latest - build: - context: ./solr/ - ports: - - "8983:8983" - - redis: - container_name: redis - image: redis:latest - ports: - - "6379:6379" +redis: + container_name: redis + image: redis:latest + ports: + - "6379:6379" From 56e7beb5b3721a9c34a4a535419ed6bd9459401f Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 22:54:07 +0100 Subject: [PATCH 09/22] CircleCI Test Docker --- circle.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/circle.yml b/circle.yml index d9fff638dea..f8076316617 100644 --- a/circle.yml +++ b/circle.yml @@ -14,6 +14,9 @@ machine: node: version: 0.10.33 + services: + - docker + dependencies: pre: @@ -27,6 +30,17 @@ dependencies: - pip install -r dev-requirements.txt - python setup.py develop + # Docker + - if [[ -e ~/docker/postgresql.tar ]]; then docker load -i ~/docker/postgresql.tar; fi + - if [[ -e ~/docker/solr.tar ]]; then docker load -i ~/docker/solr.tar; fi + - if [[ -e ~/docker/ckan.tar ]]; then docker load -i ~/docker/ckan.tar; fi + - docker build --rm=false -t postgresql ./contrib/docker/postgresql/ + - docker build --rm=false -t solr ./contrib/docker/solr/ + - docker build --rm=false -t ckan . + - mkdir -p ~/docker; docker save postgresql > ~/docker/postgresql.tar + - mkdir -p ~/docker; docker save solr > ~/docker/solr.tar + - mkdir -p ~/docker; docker save ckan > ~/docker/ckan.tar + post: - "[ -e ~/nvm/v0.10.33/lib/node_modules/mocha-phantomjs ] || npm install -g mocha-phantomjs@3.5.0 phantomjs@~1.9.1" @@ -37,6 +51,7 @@ dependencies: - ~/nvm/v0.10.33/lib/node_modules/phantomjs - ~/nvm/v0.10.33/bin/mocha-phantomjs - ~/nvm/v0.10.33/bin/phantomjs + - "~/docker" database: @@ -65,3 +80,11 @@ test: background: true - sleep 5 - mocha-phantomjs http://localhost:5000/base/test/index.html + + # Docker + - docker run -d -p -name db postgresql + - docker run -d -p -name solr solr + - docker run -d -p -name redis redis:latest + - docker run -d -p -name ckan 5000:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 + - curl --retry 10 --retry-delay 5 -v http://localhost:5000 + From a2dd96d1e7d5299e1dafdd572353165cf35e4434 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 23:15:32 +0100 Subject: [PATCH 10/22] Save Redis and set name ok --- circle.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/circle.yml b/circle.yml index f8076316617..8051576b500 100644 --- a/circle.yml +++ b/circle.yml @@ -36,9 +36,11 @@ dependencies: - if [[ -e ~/docker/ckan.tar ]]; then docker load -i ~/docker/ckan.tar; fi - docker build --rm=false -t postgresql ./contrib/docker/postgresql/ - docker build --rm=false -t solr ./contrib/docker/solr/ + - docker pull redis:latest - docker build --rm=false -t ckan . - mkdir -p ~/docker; docker save postgresql > ~/docker/postgresql.tar - mkdir -p ~/docker; docker save solr > ~/docker/solr.tar + - mkdir -p ~/docker; docker save redis:latest > ~/docker/redis.tar - mkdir -p ~/docker; docker save ckan > ~/docker/ckan.tar post: @@ -82,9 +84,9 @@ test: - mocha-phantomjs http://localhost:5000/base/test/index.html # Docker - - docker run -d -p -name db postgresql - - docker run -d -p -name solr solr - - docker run -d -p -name redis redis:latest - - docker run -d -p -name ckan 5000:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 + - docker run -d -p --name db postgresql + - docker run -d -p --name solr solr + - docker run -d -p --name redis redis:latest + - docker run -d -p --name ckan 5000:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 - curl --retry 10 --retry-delay 5 -v http://localhost:5000 From 196b3f5e9322507f8539629cfbe52807070dac3f Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 23:31:04 +0100 Subject: [PATCH 11/22] BugFix on CircleCI --- circle.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/circle.yml b/circle.yml index 8051576b500..60a7fd737ae 100644 --- a/circle.yml +++ b/circle.yml @@ -84,9 +84,9 @@ test: - mocha-phantomjs http://localhost:5000/base/test/index.html # Docker - - docker run -d -p --name db postgresql - - docker run -d -p --name solr solr - - docker run -d -p --name redis redis:latest - - docker run -d -p --name ckan 5000:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 + - docker run -d --name db postgresql + - docker run -d --name solr solr + - docker run -d --name redis redis:latest + - docker run -d --name ckan -p 5000:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 - curl --retry 10 --retry-delay 5 -v http://localhost:5000 From f9dcda02b21124c2f3bc22964cc826c444761d29 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Sun, 4 Dec 2016 23:33:17 +0100 Subject: [PATCH 12/22] Changed Exposed Port to don't collide with background tests --- circle.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/circle.yml b/circle.yml index 60a7fd737ae..eec018f269c 100644 --- a/circle.yml +++ b/circle.yml @@ -87,6 +87,6 @@ test: - docker run -d --name db postgresql - docker run -d --name solr solr - docker run -d --name redis redis:latest - - docker run -d --name ckan -p 5000:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 - - curl --retry 10 --retry-delay 5 -v http://localhost:5000 + - docker run -d --name ckan -p 5001:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 + - curl --retry 10 --retry-delay 5 -v http://localhost:5001 From 0466e5e4a6b3d2bd3ff3c0970c06622623882171 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Mon, 5 Dec 2016 03:15:58 +0100 Subject: [PATCH 13/22] Sleep outside run --- circle.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index eec018f269c..941b36c7ad0 100644 --- a/circle.yml +++ b/circle.yml @@ -87,6 +87,7 @@ test: - docker run -d --name db postgresql - docker run -d --name solr solr - docker run -d --name redis redis:latest - - docker run -d --name ckan -p 5001:5000 --link db:db --link redis:redis --link solr:solr ckan; sleep 10 + - docker run -d --name ckan -p 5001:5000 --link db:db --link redis:redis --link solr:solr ckan + - sleep 10 - curl --retry 10 --retry-delay 5 -v http://localhost:5001 From d802264ac38ce17fa3d89029dacf3684eb464adc Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Tue, 20 Dec 2016 02:15:00 +0100 Subject: [PATCH 14/22] Added ENV for Storage and URL --- Dockerfile | 1 + contrib/docker/ckan-entrypoint.sh | 12 ++---------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5358fa2866f..0311592b36c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,7 @@ MAINTAINER Open Knowledge ENV CKAN_HOME /usr/lib/ckan/default ENV CKAN_CONFIG /etc/ckan/default ENV CKAN_DATA /var/lib/ckan +ENV SITE_URL http://localhost:5000 # Install required packages RUN apt-get -q -y update && apt-get -q -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -q -y install \ diff --git a/contrib/docker/ckan-entrypoint.sh b/contrib/docker/ckan-entrypoint.sh index cb44a067513..b612b5344c1 100644 --- a/contrib/docker/ckan-entrypoint.sh +++ b/contrib/docker/ckan-entrypoint.sh @@ -8,8 +8,6 @@ set -eu : ${SOLR_URL:=} # URL for redis (required unless linked to a container called 'redis') : ${REDIS_URL:=} -# Email to which errors should be sent (optional, default: none) -: ${ERROR_EMAIL:=} CONFIG="${CKAN_CONFIG}/ckan.ini" @@ -25,14 +23,8 @@ write_config () { "sqlalchemy.url = ${DATABASE_URL}" \ "solr_url = ${SOLR_URL}" \ "ckan.redis.url = ${REDIS_URL}" \ - "ckan.storage_path = /var/lib/ckan" \ - "email_to = disabled@example.com" \ - "error_email_from = ckan@$(hostname -f)" \ - "ckan.site_url = http://localhost:5000" - - if [ -n "$ERROR_EMAIL" ]; then - sed -i -e "s&^#email_to.*&email_to = ${ERROR_EMAIL}&" "$CONFIG" - fi + "ckan.storage_path = ${CKAN_DATA}" \ + "ckan.site_url = ${SITE_URL}" } link_postgres_url () { From f9a152c57d850b8e113a3394fc4ed94f7cc1e1c0 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Tue, 20 Dec 2016 02:41:23 +0100 Subject: [PATCH 15/22] Travis YML Added --- .travis.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000000..587e89246bc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,33 @@ +sudo: required + +language: python + +services: + - docker + +cache: + directories: + - ~/docker + +before_install: + - if [[ -e ~/docker/postgresql.tar ]]; then docker load -i ~/docker/postgresql.tar; fi + - if [[ -e ~/docker/solr.tar ]]; then docker load -i ~/docker/solr.tar; fi + - if [[ -e ~/docker/ckan.tar ]]; then docker load -i ~/docker/ckan.tar; fi + - docker build --rm=false -t postgresql ./contrib/docker/postgresql/ + - docker build --rm=false -t solr ./contrib/docker/solr/ + - docker pull redis:latest + - docker build --rm=false -t ckan . + - mkdir -p ~/docker; docker save postgresql > ~/docker/postgresql.tar + - mkdir -p ~/docker; docker save solr > ~/docker/solr.tar + - mkdir -p ~/docker; docker save redis:latest > ~/docker/redis.tar + - mkdir -p ~/docker; docker save ckan > ~/docker/ckan.tar + +install: + - docker run -d --name db postgresql + - docker run -d --name solr solr + - docker run -d --name redis redis:latest + - docker run -d --name ckan -p 500:5000 --link db:db --link redis:redis --link solr:solr ckan + +script: + - sleep 10 + - curl --retry 10 --retry-delay 5 -v http://localhost:5000 From bb7dc7afdb4cf9f84e005304b8a5b69e7ca55718 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Thu, 22 Dec 2016 20:23:04 +0100 Subject: [PATCH 16/22] Redis Cached --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 587e89246bc..00e63da4a4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,11 +12,14 @@ cache: before_install: - if [[ -e ~/docker/postgresql.tar ]]; then docker load -i ~/docker/postgresql.tar; fi - if [[ -e ~/docker/solr.tar ]]; then docker load -i ~/docker/solr.tar; fi + - if [[ -e ~/docker/redis.tar ]]; then docker load -i ~/docker/redis.tar; fi - if [[ -e ~/docker/ckan.tar ]]; then docker load -i ~/docker/ckan.tar; fi + - docker build --rm=false -t postgresql ./contrib/docker/postgresql/ - docker build --rm=false -t solr ./contrib/docker/solr/ - docker pull redis:latest - docker build --rm=false -t ckan . + - mkdir -p ~/docker; docker save postgresql > ~/docker/postgresql.tar - mkdir -p ~/docker; docker save solr > ~/docker/solr.tar - mkdir -p ~/docker; docker save redis:latest > ~/docker/redis.tar @@ -27,7 +30,3 @@ install: - docker run -d --name solr solr - docker run -d --name redis redis:latest - docker run -d --name ckan -p 500:5000 --link db:db --link redis:redis --link solr:solr ckan - -script: - - sleep 10 - - curl --retry 10 --retry-delay 5 -v http://localhost:5000 From 794fa5c7bbcce2946023b08a5b8e84f67980edc0 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Thu, 22 Dec 2016 20:24:12 +0100 Subject: [PATCH 17/22] CircleCI - No Docker --- circle.yml | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/circle.yml b/circle.yml index 941b36c7ad0..d9fff638dea 100644 --- a/circle.yml +++ b/circle.yml @@ -14,9 +14,6 @@ machine: node: version: 0.10.33 - services: - - docker - dependencies: pre: @@ -30,19 +27,6 @@ dependencies: - pip install -r dev-requirements.txt - python setup.py develop - # Docker - - if [[ -e ~/docker/postgresql.tar ]]; then docker load -i ~/docker/postgresql.tar; fi - - if [[ -e ~/docker/solr.tar ]]; then docker load -i ~/docker/solr.tar; fi - - if [[ -e ~/docker/ckan.tar ]]; then docker load -i ~/docker/ckan.tar; fi - - docker build --rm=false -t postgresql ./contrib/docker/postgresql/ - - docker build --rm=false -t solr ./contrib/docker/solr/ - - docker pull redis:latest - - docker build --rm=false -t ckan . - - mkdir -p ~/docker; docker save postgresql > ~/docker/postgresql.tar - - mkdir -p ~/docker; docker save solr > ~/docker/solr.tar - - mkdir -p ~/docker; docker save redis:latest > ~/docker/redis.tar - - mkdir -p ~/docker; docker save ckan > ~/docker/ckan.tar - post: - "[ -e ~/nvm/v0.10.33/lib/node_modules/mocha-phantomjs ] || npm install -g mocha-phantomjs@3.5.0 phantomjs@~1.9.1" @@ -53,7 +37,6 @@ dependencies: - ~/nvm/v0.10.33/lib/node_modules/phantomjs - ~/nvm/v0.10.33/bin/mocha-phantomjs - ~/nvm/v0.10.33/bin/phantomjs - - "~/docker" database: @@ -82,12 +65,3 @@ test: background: true - sleep 5 - mocha-phantomjs http://localhost:5000/base/test/index.html - - # Docker - - docker run -d --name db postgresql - - docker run -d --name solr solr - - docker run -d --name redis redis:latest - - docker run -d --name ckan -p 5001:5000 --link db:db --link redis:redis --link solr:solr ckan - - sleep 10 - - curl --retry 10 --retry-delay 5 -v http://localhost:5001 - From 794b687d6ccfae426c5a1f8d10e15b976afd5500 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Thu, 22 Dec 2016 20:41:22 +0100 Subject: [PATCH 18/22] Docker Show Info at end --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 00e63da4a4a..ca35bc006c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,3 +30,6 @@ install: - docker run -d --name solr solr - docker run -d --name redis redis:latest - docker run -d --name ckan -p 500:5000 --link db:db --link redis:redis --link solr:solr ckan + +script: + - docker ps -a \ No newline at end of file From 8ba3375eea3f936cb8085e98fa537d7e3890c280 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Thu, 22 Dec 2016 20:55:59 +0100 Subject: [PATCH 19/22] Port 5000 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ca35bc006c2..5fcaf70d151 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ install: - docker run -d --name db postgresql - docker run -d --name solr solr - docker run -d --name redis redis:latest - - docker run -d --name ckan -p 500:5000 --link db:db --link redis:redis --link solr:solr ckan + - docker run -d --name ckan -p 5000:5000 --link db:db --link redis:redis --link solr:solr ckan script: - docker ps -a \ No newline at end of file From b05c43a7301dbd660dc6895219c9fc4f3eddb154 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Fri, 6 Jan 2017 08:08:41 +0100 Subject: [PATCH 20/22] Using new ENV-VAR names --- Dockerfile | 6 ++--- contrib/docker/ckan-entrypoint.sh | 42 ++++++++++++++++++------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0311592b36c..25bfd3f2358 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,8 +5,8 @@ MAINTAINER Open Knowledge ENV CKAN_HOME /usr/lib/ckan/default ENV CKAN_CONFIG /etc/ckan/default -ENV CKAN_DATA /var/lib/ckan -ENV SITE_URL http://localhost:5000 +ENV CKAN_STORAGE_PATH /var/lib/ckan +ENV CKAN_SITE_URL http://localhost:5000 # Install required packages RUN apt-get -q -y update && apt-get -q -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -q -y install \ @@ -18,7 +18,7 @@ RUN apt-get -q -y update && apt-get -q -y upgrade && DEBIAN_FRONTEND=noninteract && apt-get -q clean # SetUp Virtual Environment CKAN -RUN mkdir -p $CKAN_HOME $CKAN_CONFIG $CKAN_DATA +RUN mkdir -p $CKAN_HOME $CKAN_CONFIG $CKAN_STORAGE_PATH RUN virtualenv $CKAN_HOME RUN ln -s $CKAN_HOME/bin/pip /usr/local/bin/ckan-pip RUN ln -s $CKAN_HOME/bin/paster /usr/local/bin/ckan-paster diff --git a/contrib/docker/ckan-entrypoint.sh b/contrib/docker/ckan-entrypoint.sh index b612b5344c1..6baaad97290 100644 --- a/contrib/docker/ckan-entrypoint.sh +++ b/contrib/docker/ckan-entrypoint.sh @@ -1,13 +1,13 @@ #!/bin/sh -set -eu +set -e # URL for the primary database, in the format expected by sqlalchemy (required # unless linked to a container called 'db') -: ${DATABASE_URL:=} +: ${CKAN_SQLALCHEMY_URL:=} # URL for solr (required unless linked to a container called 'solr') -: ${SOLR_URL:=} +: ${CKAN_SOLR_URL:=} # URL for redis (required unless linked to a container called 'redis') -: ${REDIS_URL:=} +: ${CKAN_REDIS_URL:=} CONFIG="${CKAN_CONFIG}/ckan.ini" @@ -19,12 +19,18 @@ abort () { write_config () { ckan-paster make-config ckan "$CONFIG" + #export CKAN_SQLALCHEMY_URL=${CKAN_SQLALCHEMY_URL} + #export CKAN_SOLR_URL=${CKAN_SOLR_URL} + #export CKAN_SITE_URL=${CKAN_SITE_URL} + #export CKAN_REDIS_URL=${KAN_REDIS_URL} + #export CKAN_STORAGE_PATH=${CKAN_STORAGE_PATH} + ckan-paster --plugin=ckan config-tool "$CONFIG" -e \ - "sqlalchemy.url = ${DATABASE_URL}" \ - "solr_url = ${SOLR_URL}" \ - "ckan.redis.url = ${REDIS_URL}" \ - "ckan.storage_path = ${CKAN_DATA}" \ - "ckan.site_url = ${SITE_URL}" + "sqlalchemy.url = ${CKAN_SQLALCHEMY_URL}" \ + "solr_url = ${CKAN_SOLR_URL}" \ + "ckan.redis.url = ${CKAN_REDIS_URL}" \ + "ckan.storage_path = ${CKAN_STORAGE_PATH}" \ + "ckan.site_url = ${CKAN_SITE_URL}" } link_postgres_url () { @@ -51,21 +57,21 @@ link_redis_url () { # If we don't already have a config file, bootstrap if [ ! -e "$CONFIG" ]; then - if [ -z "$DATABASE_URL" ]; then - if ! DATABASE_URL=$(link_postgres_url); then - abort "ERROR: no DATABASE_URL specified and linked container called 'db' was not found" + if [ -z "$CKAN_SQLALCHEMY_URL" ]; then + if ! CKAN_SQLALCHEMY_URL=$(link_postgres_url); then + abort "ERROR: no CKAN_SQLALCHEMY_URL specified and linked container called 'db' was not found" fi fi - if [ -z "$SOLR_URL" ]; then - if ! SOLR_URL=$(link_solr_url); then - abort "ERROR: no SOLR_URL specified and linked container called 'solr' was not found" + if [ -z "$CKAN_SOLR_URL" ]; then + if ! CKAN_SOLR_URL=$(link_solr_url); then + abort "ERROR: no CKAN_SOLR_URL specified and linked container called 'solr' was not found" fi fi - if [ -z "$REDIS_URL" ]; then - if ! REDIS_URL=$(link_redis_url); then - abort "ERROR: no REDIS_URL specified and linked container called 'redis' was not found" + if [ -z "$CKAN_REDIS_URL" ]; then + if ! CKAN_REDIS_URL=$(link_redis_url); then + abort "ERROR: no CKAN_REDIS_URL specified and linked container called 'redis' was not found" fi fi From 01a2526f8000c6bfa5b54f35ad0ae52e23a0cad2 Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Fri, 6 Jan 2017 08:29:09 +0100 Subject: [PATCH 21/22] TMP-BUGFIX --- Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Dockerfile b/Dockerfile index 25bfd3f2358..55a720ddbd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,6 +27,10 @@ RUN ln -s $CKAN_HOME/bin/paster /usr/local/bin/ckan-paster ADD ./requirements.txt $CKAN_HOME/src/ckan/requirements.txt RUN ckan-pip install --upgrade -r $CKAN_HOME/src/ckan/requirements.txt +# TMP-BUGFIX https://github.com/ckan/ckan/issues/3388 +ADD ./dev-requirements.txt $CKAN_HOME/src/ckan/dev-requirements.txt +RUN ckan-pip install --upgrade -r $CKAN_HOME/src/ckan/dev-requirements.txt + # SetUp CKAN ADD . $CKAN_HOME/src/ckan/ RUN ckan-pip install -e $CKAN_HOME/src/ckan/ From 3fea23eda64930d01867c7f3deb763afab9e2d7b Mon Sep 17 00:00:00 2001 From: Raul Hidalgo Caballero Date: Fri, 6 Jan 2017 08:48:05 +0100 Subject: [PATCH 22/22] Using ENV-VAR --- contrib/docker/ckan-entrypoint.sh | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/contrib/docker/ckan-entrypoint.sh b/contrib/docker/ckan-entrypoint.sh index 6baaad97290..8418b5c950a 100644 --- a/contrib/docker/ckan-entrypoint.sh +++ b/contrib/docker/ckan-entrypoint.sh @@ -17,20 +17,22 @@ abort () { } write_config () { + + export CKAN_SQLALCHEMY_URL=${CKAN_SQLALCHEMY_URL} + export CKAN_SOLR_URL=${CKAN_SOLR_URL} + export CKAN_REDIS_URL=${CKAN_REDIS_URL} + export CKAN_STORAGE_PATH=${CKAN_STORAGE_PATH} + export CKAN_SITE_URL=${CKAN_SITE_URL} + ckan-paster make-config ckan "$CONFIG" - #export CKAN_SQLALCHEMY_URL=${CKAN_SQLALCHEMY_URL} - #export CKAN_SOLR_URL=${CKAN_SOLR_URL} - #export CKAN_SITE_URL=${CKAN_SITE_URL} - #export CKAN_REDIS_URL=${KAN_REDIS_URL} - #export CKAN_STORAGE_PATH=${CKAN_STORAGE_PATH} - - ckan-paster --plugin=ckan config-tool "$CONFIG" -e \ - "sqlalchemy.url = ${CKAN_SQLALCHEMY_URL}" \ - "solr_url = ${CKAN_SOLR_URL}" \ - "ckan.redis.url = ${CKAN_REDIS_URL}" \ - "ckan.storage_path = ${CKAN_STORAGE_PATH}" \ - "ckan.site_url = ${CKAN_SITE_URL}" + # In case want to use the config from ckan.ini use this + #ckan-paster --plugin=ckan config-tool "$CONFIG" -e \ + # "sqlalchemy.url = ${CKAN_SQLALCHEMY_URL}" \ + # "solr_url = ${CKAN_SOLR_URL}" \ + # "ckan.redis.url = ${CKAN_REDIS_URL}" \ + # "ckan.storage_path = ${CKAN_STORAGE_PATH}" \ + # "ckan.site_url = ${CKAN_SITE_URL}" } link_postgres_url () { @@ -79,6 +81,7 @@ if [ ! -e "$CONFIG" ]; then fi +# Initializes the Database ckan-paster --plugin=ckan db init -c "${CKAN_CONFIG}/ckan.ini" exec "$@"