Navigation Menu

Skip to content

Commit

Permalink
Port dockerization stuff from geonode
Browse files Browse the repository at this point in the history
  • Loading branch information
francbartoli committed Feb 27, 2018
1 parent a65ba6f commit 28a518e
Show file tree
Hide file tree
Showing 8 changed files with 394 additions and 39 deletions.
1 change: 1 addition & 0 deletions .env
@@ -0,0 +1 @@
COMPOSE_PROJECT_NAME=starterkit
10 changes: 8 additions & 2 deletions Dockerfile
@@ -1,2 +1,8 @@
FROM terranodo/django:geonode
MAINTAINER Ariel Núñez<ariel@terranodo.io>
FROM geonode/geonode:latest
MAINTAINER Starterkit development team

COPY requirements.txt /usr/src/app/
RUN pip install -r requirements.txt --no-deps

EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
18 changes: 15 additions & 3 deletions docker-compose.override.yml
@@ -1,8 +1,9 @@
version: '2'
version: '2.2'

services:
django:
# Loading the app is defined here to allow for
build: .
# Loading the app is defined here to allow for
# autoreload on changes it is mounted on top of the
# old copy that docker added when creating the image
volumes:
Expand All @@ -11,11 +12,22 @@ services:
- DEBUG=True

celery:
# Loading the app is defined here to allow for
build: .
# Loading the app is defined here to allow for
# autoreload on changes it is mounted on top of the
# old copy that docker added when creating the image
volumes:
- '.:/usr/src/app'
environment:
- DEBUG=True


consumers:
build: .
# Loading the app is defined here to allow for
# autoreload on changes it is mounted on top of the
# old copy that docker added when creating the image
volumes:
- '.:/usr/src/app'
environment:
- DEBUG=True
158 changes: 125 additions & 33 deletions docker-compose.yml
@@ -1,54 +1,146 @@
version: '2'
version: '2.2'
services:

postgres:
image: postgres
db:
image: geonode/postgis:9.6
restart: unless-stopped
container_name: db4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: db
org.geonode.instance.name: geonode
volumes:
- dbdata:/var/lib/postgresql/data
- dbbackups:/pg_backups
env_file:
- ./scripts/docker/env/production/db.env

elasticsearch:
image: elasticsearch
image: elasticsearch
restart: unless-stopped
container_name: elasticsearch4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: elasticsearch
org.geonode.instance.name: geonode

rabbitmq:
image: rabbitmq
image: rabbitmq
restart: unless-stopped
container_name: rabbitmq4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: rabbitmq
org.geonode.instance.name: geonode

django:
build: .
links:
- postgres
restart: unless-stopped
image: geonode/geonode:latest
container_name: django4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: django
org.geonode.instance.name: geonode
depends_on:
- db
- elasticsearch
- rabbitmq
environment:
- DATABASE_URL=postgres://postgres:postgres@postgres:5432/postgres
- BROKER_URL=amqp://guest:guest@rabbitmq:5672/
- DJANGO_SETTINGS_MODULE={{project_name}}.settings
- GEOSERVER_BASE_URL="http://geoserver:8080/geoserver/"
- ALLOWED_HOSTS=['django',]
command: django-admin.py runserver 0.0.0.0:8000 --settings=geonode.settings
volumes:
- /var/run/docker.sock:/var/run/docker.sock
env_file:
- ./scripts/docker/env/production/django.env

celery:
build: .
links:
restart: unless-stopped
image: geonode/geonode:latest
container_name: celery4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: celery
org.geonode.instance.name: geonode
depends_on:
- db
- elasticsearch
- rabbitmq
command: celery worker --app=geonode.celery_app:app -B -l INFO
volumes:
- /var/run/docker.sock:/var/run/docker.sock
env_file:
- ./scripts/docker/env/production/celery.env

consumers:
image: geonode/geonode:latest
restart: unless-stopped
container_name: consumers4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: consumers
org.geonode.instance.name: geonode
depends_on:
- rabbitmq
- postgres
- db
- elasticsearch
command: celery worker --app={{project_name}}.celeryapp:app -B -l INFO
environment:
- DATABASE_URL=postgres://postgres:postgres@postgres:5432/postgres
- BROKER_URL=amqp://guest:guest@rabbitmq:5672/
- GEOSERVER_BASE_URL="http://geoserver:8080/geoserver/"
- DJANGO_SETTINGS_MODULE={{project_name}}.settings
- ALLOWED_HOSTS=['django',]
- C_FORCE_ROOT=1
command: python manage.py runmessaging
volumes:
- /var/run/docker.sock:/var/run/docker.sock
env_file:
- ./scripts/docker/env/production/django.env

geoserver:
image: waybarrios/geoserver
links:
- postgres
ports:
- "8080"
image: geonode/geoserver:2.12.x
restart: unless-stopped
container_name: geoserver4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: geoserver
org.geonode.instance.name: geonode
depends_on:
- db
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- geoserver-data-dir:/geoserver_data/data
env_file:
- ./scripts/docker/env/production/geoserver.env

nginx:
image: terranodo/nginx:geoserver
links:
geonode:
image: geonode/nginx:geoserver
restart: unless-stopped
container_name: nginx4${COMPOSE_PROJECT_NAME}
stdin_open: true
# tty: true
labels:
org.geonode.component: nginx
org.geonode.instance.name: geonode
depends_on:
- django
- geoserver
ports:
- "80:80"

data-dir-conf:
image: geonode/geoserver_data:2.12.x
restart: on-failure
container_name: gsconf4${COMPOSE_PROJECT_NAME}
labels:
org.geonode.component: conf
org.geonode.instance.name: geonode
command: /bin/true
volumes:
- geoserver-data-dir:/geoserver_data/data

volumes:

geoserver-data-dir:
name: ${COMPOSE_PROJECT_NAME}-gsdatadir
dbdata:
name: ${COMPOSE_PROJECT_NAME}-dbdata
dbbackups:
name: ${COMPOSE_PROJECT_NAME}-dbbackups
51 changes: 51 additions & 0 deletions entrypoint.sh
@@ -0,0 +1,51 @@
#!/bin/bash
set -e

/usr/local/bin/invoke update >> /usr/src/app/invoke.log

source $HOME/.override_env

echo DATABASE_URL=$DATABASE_URL
echo GEODATABASE_URL=$GEODATABASE_URL
echo SITEURL=$SITEURL
echo ALLOWED_HOSTS=$ALLOWED_HOSTS
echo GEOSERVER_PUBLIC_LOCATION=$GEOSERVER_PUBLIC_LOCATION

/usr/local/bin/invoke waitfordbs >> /usr/src/app/invoke.log

echo "waitfordbs task done"

/usr/local/bin/invoke migrations >> /usr/src/app/invoke.log
echo "migrations task done"
/usr/local/bin/invoke prepare >> /usr/src/app/invoke.log
echo "prepare task done"
/usr/local/bin/invoke fixtures >> /usr/src/app/invoke.log
echo "fixture task done"

cmd="$@"

echo DOCKER_ENV=$DOCKER_ENV

if [ -z ${DOCKER_ENV} ] || [ ${DOCKER_ENV} = "development" ]
then

echo "Executing standard Django server $cmd for Development"

else

if [ ${IS_CELERY} = "true" ]
then

cmd=$CELERY_CMD
echo "Executing Celery server $cmd for Production"

else

cmd=$UWSGI_CMD
echo "Executing UWSGI server $cmd for Production"

fi

fi

exec $cmd
2 changes: 1 addition & 1 deletion requirements.txt
@@ -1,4 +1,4 @@
# -e git://github.com/GeoNode/geonode.git@master#egg=geonode
-e git://github.com/GeoNode/geonode.git@master#egg=geonode
django-overextends
django-annoying
django-rosetta==0.7.6
Expand Down

0 comments on commit 28a518e

Please sign in to comment.