diff --git a/Dockerfile b/Dockerfile index 47061a6a355..95091022177 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,11 +3,6 @@ FROM debian:jessie MAINTAINER Open Knowledge -ENV CKAN_HOME /usr/lib/ckan/default -ENV CKAN_CONFIG /etc/ckan/default -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 \ python-dev \ @@ -17,6 +12,15 @@ RUN apt-get -q -y update && apt-get -q -y upgrade && DEBIAN_FRONTEND=noninteract git-core \ && apt-get -q clean +# Define environment variables +ENV CKAN_HOME /usr/lib/ckan/default +ENV CKAN_CONFIG /etc/ckan/default +ENV CKAN_STORAGE_PATH /var/lib/ckan + +# Build-time variables specified by docker-compose.yml / .env or +# docker build . -t chan --build-arg CKAN_SITE_URL=http://localhost:5000 +ARG CKAN_SITE_URL + # SetUp Virtual Environment CKAN RUN mkdir -p $CKAN_HOME $CKAN_CONFIG $CKAN_STORAGE_PATH RUN virtualenv $CKAN_HOME diff --git a/contrib/docker/ckan-entrypoint.sh b/contrib/docker/ckan-entrypoint.sh index ab9d78e0952..d15a7e3faa9 100644 --- a/contrib/docker/ckan-entrypoint.sh +++ b/contrib/docker/ckan-entrypoint.sh @@ -65,6 +65,9 @@ if [ ! -e "$CONFIG" ]; then fi # Set environment variables +echo "SQL_ALCHEMY_URL is provided to entrypoint as $CKAN_SQLALCHEMY_URL" + + 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" @@ -75,6 +78,7 @@ if [ -z "$CKAN_SQLALCHEMY_URL" ]; then export PGDATABASE=${DB_ENV_POSTGRES_DB} export PGUSER=${DB_ENV_POSTGRES_USER} export PGPASSWORD=${DB_ENV_POSTGRES_PASSWORD} + echo "PG password is $PGPASSWORD" # wait for postgres db to be available, immediately after creation # its entrypoint creates the cluster and dbs and this can take a moment @@ -90,7 +94,7 @@ if [ -z "$CKAN_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" diff --git a/contrib/docker/docker-compose.yml b/contrib/docker/docker-compose.yml index e883e33d222..76c2584a389 100644 --- a/contrib/docker/docker-compose.yml +++ b/contrib/docker/docker-compose.yml @@ -3,30 +3,45 @@ # able to connect to the DB, then most likely the DB has not # started up quickly enough. Just do "docker-compose up ckan" # again to retry -ckan: - container_name: ckan - # Note, if you are working on CKAN core, change this to - # build ../../ - image: ckan/ckan:latest - links: +version: "3" +services: + ckan: + container_name: ckan + build: + context: ../../ + args: + - CKAN_SITE_URL=${CKAN_SITE_URL} + links: - db - solr - redis - ports: + ports: - "80:5000" - environment: + environment: + - CKAN_SQLALCHEMY_URL=postgresql://ckan:${POSTGRES_PASSWORD}@db/ckan + - CKAN_SITE_URL=${CKAN_SITE_URL} - DB_PORT_5432_TCP_ADDR=db + - DB_PORT_5432_TCP_PORT=5432 - SOLR_PORT_8983_TCP_ADDR=solr + - SOLR_PORT_8983_TCP_PORT=8983 - REDIS_PORT_6379_TCP_ADDR=redis - -db: - container_name: db - build: postgresql/ - -solr: - container_name: solr - image: ckan/solr:latest - -redis: - container_name: redis - image: redis:latest + db: + container_name: db + build: + context: postgresql/ + args: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + ports: + - "5432:5432" + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + solr: + container_name: solr + image: ckan/solr:latest + ports: + - "8983:8983" + redis: + container_name: redis + image: redis:latest + ports: + - "6379:6379" diff --git a/contrib/docker/postgresql/Dockerfile b/contrib/docker/postgresql/Dockerfile index 3b77d9a4e31..9d97cde79f2 100644 --- a/contrib/docker/postgresql/Dockerfile +++ b/contrib/docker/postgresql/Dockerfile @@ -6,5 +6,7 @@ RUN echo "host all all 0.0.0.0/0 md5" >> /var/lib/postgresql/data/pg_hba.co # Customize default user/pass/db ENV POSTGRES_USER ckan -ENV POSTGRES_PASSWORD ckan +ARG POSTGRES_PASSWORD ENV POSTGRES_DB ckan + +RUN echo "Building postgres:9.6 with user $POSTGRES_USER, pw $POSTGRES_PASSWORD, db $POSTGRES_DB"