Skip to content

Commit

Permalink
Merge pull request #3346 from deinok/docker-update
Browse files Browse the repository at this point in the history
Docker BugFix
  • Loading branch information
wardi committed Jan 6, 2017
2 parents cccfbfd + 3fea23e commit 1d0cee3
Show file tree
Hide file tree
Showing 6 changed files with 183 additions and 63 deletions.
35 changes: 35 additions & 0 deletions .travis.yml
@@ -0,0 +1,35 @@
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/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
- 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 5000:5000 --link db:db --link redis:redis --link solr:solr ckan

script:
- docker ps -a
74 changes: 30 additions & 44 deletions Dockerfile
@@ -1,63 +1,49 @@
FROM phusion/baseimage:0.9.15
MAINTAINER Open Knowledge
# docker build . -t ckan && docker run -d -p 80:5000 --link db:db --link redis:redis --link solr:solr ckan

# Disable SSH
RUN rm -rf /etc/service/sshd /etc/my_init.d/00_regen_ssh_host_keys.sh
FROM debian:jessie
MAINTAINER Open Knowledge

ENV HOME /root
ENV CKAN_HOME /usr/lib/ckan/default
ENV CKAN_CONFIG /etc/ckan/default
ENV CKAN_DATA /var/lib/ckan
ENV CKAN_STORAGE_PATH /var/lib/ckan
ENV CKAN_SITE_URL http://localhost:5000

# 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
git-core \
&& apt-get -q clean

# SetUp Virtual Environment CKAN
RUN mkdir -p $CKAN_HOME $CKAN_CONFIG $CKAN_STORAGE_PATH
RUN virtualenv $CKAN_HOME
RUN mkdir -p $CKAN_HOME $CKAN_CONFIG $CKAN_DATA
RUN chown www-data:www-data $CKAN_DATA
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
ADD . $CKAN_HOME/src/ckan/
RUN $CKAN_HOME/bin/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
RUN ckan-pip install --upgrade -r $CKAN_HOME/src/ckan/requirements.txt

# Configure nginx
ADD ./contrib/docker/nginx.conf /etc/nginx/nginx.conf
RUN mkdir /var/cache/nginx
# 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

# Configure postfix
ADD ./contrib/docker/main.cf /etc/postfix/main.cf
# SetUp CKAN
ADD . $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

# 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 /
RUN chmod +x /ckan-entrypoint.sh
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"]
87 changes: 87 additions & 0 deletions contrib/docker/ckan-entrypoint.sh
@@ -0,0 +1,87 @@
#!/bin/sh
set -e

# URL for the primary database, in the format expected by sqlalchemy (required
# unless linked to a container called 'db')
: ${CKAN_SQLALCHEMY_URL:=}
# URL for solr (required unless linked to a container called 'solr')
: ${CKAN_SOLR_URL:=}
# URL for redis (required unless linked to a container called 'redis')
: ${CKAN_REDIS_URL:=}

CONFIG="${CKAN_CONFIG}/ckan.ini"

abort () {
echo "$@" >&2
exit 1
}

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"

# 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 () {
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 "$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 "$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 "$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

write_config

fi

# Initializes the Database
ckan-paster --plugin=ckan db init -c "${CKAN_CONFIG}/ckan.ini"

exec "$@"
5 changes: 4 additions & 1 deletion contrib/docker/docker-cloud.yml
Expand Up @@ -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
43 changes: 26 additions & 17 deletions contrib/docker/docker-compose.yml
@@ -1,19 +1,28 @@
version: '2'
services:
ckan:
container_name: ckan
image: ckan/ckan:latest
depends_on:
# docker-compose build && docker-compose up
ckan:
container_name: ckan
image: ckan/ckan:latest
links:
- db
- solr
links:
- db
- solr
ports:
- "80:80"
db:
container_name: db
image: ckan/postgresql:latest
solr:
container_name: solr
image: ckan/solr:latest
- redis
ports:
- "80:5000"

db:
container_name: db
image: ckan/postgresql:latest
ports:
- "5432:5432"

solr:
container_name: solr
image: ckan/solr:latest
ports:
- "8983:8983"

redis:
container_name: redis
image: redis:latest
ports:
- "6379:6379"
2 changes: 1 addition & 1 deletion contrib/docker/solr/Dockerfile
Expand Up @@ -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 \
Expand Down

0 comments on commit 1d0cee3

Please sign in to comment.