Alpinize + Dockerize CKAN DataPusher

This commit is contained in:
Disassembler 2017-12-20 15:41:29 +01:00
parent 2b63a7a17d
commit fc74de15b2
9 changed files with 86 additions and 15 deletions

View File

@ -64,5 +64,5 @@ vi 00-install.sh
| Solr | 8983 | N/A | | Solr | 8983 | N/A |
| Sahana | 8001 | 8401 | | Sahana | 8001 | 8401 |
| CKAN | 8003 | 8403 | | CKAN | 8003 | 8403 |
| CKAN Datapusher | 8004 | 8404 | | CKAN Datapusher | 8004 | N/A |
| OpenMapKit | 8007 | 8407 | | OpenMapKit | 8007 | 8407 |

25
ckan-datapusher.sh Executable file
View File

@ -0,0 +1,25 @@
#!/bin/sh
SOURCE_DIR=${SOURCE_DIR}/ckan-datapusher
# Build Docker container
docker build -t ckan-datapusher ${SOURCE_DIR}
# Configure CKAN DataPusher
mkdir -p /srv/ckan-datapusher/conf
mkdir /srv/ckan-datapusher/data
cp ${SOURCE_DIR}/srv/ckan-datapusher/conf/datapusher.wsgi /srv/ckan-datapusher/conf/datapusher.wsgi
cp ${SOURCE_DIR}/srv/ckan-datapusher/conf/datapusher_settings.py /srv/ckan-datapusher/conf/datapusher_settings.py
chown -R 8004:8004 /srv/ckan-datapusher/data
# Configure CKAN DataPusher service
cp ${SOURCE_DIR}/etc/init.d/ckan-datapusher /etc/init.d/ckan-datapusher
rc-update add ckan-datapusher boot
service ckan-datapusher start
# Create nginx app definition
cp ${SOURCE_DIR}/etc/nginx/apps/ckan-datapusher /etc/nginx/apps/ckan-datapusher
cp ${SOURCE_DIR}/etc/nginx/conf.d/ckan-datapusher.conf /etc/nginx/conf.d/ckan-datapusher.conf
# Reload nginx configuration
service nginx reload

View File

@ -0,0 +1,27 @@
FROM alpine:3.7
MAINTAINER Disassembler <disassembler@dasm.cz>
RUN apk --no-cache add python2
RUN apk --no-cache add libxml2 libxslt
RUN apk --no-cache add libffi libressl libxml2 libxslt uwsgi-python \
&& apk --no-cache add --virtual .deps build-base git libffi-dev libressl-dev libxml2-dev libxslt-dev py2-pip python2-dev \
&& mkdir -p /srv/ckan-datapusher \
&& cd /srv/ckan-datapusher \
&& pip install -U setuptools \
&& pip install -e 'git+https://github.com/ckan/datapusher.git#egg=datapusher' \
&& pip install -r /srv/ckan-datapusher/src/datapusher/requirements.txt \
&& addgroup -S -g 8004 ckan-datapusher \
&& adduser -S -u 8004 -h /srv/ckan-datapusher -s /bin/false -g ckan-datapusher -G ckan-datapusher ckan-datapusher \
&& chown -R ckan-datapusher:ckan-datapusher /srv/ckan-datapusher \
&& apk del .deps \
&& find /srv/ckan-datapusher/src -name '.git*' -exec rm -rf {} + \
&& rm -rf /root \
&& mkdir /root
VOLUME ["/etc/ckan-datapusher", "/srv/ckan-datapusher/data"]
EXPOSE 8004
USER ckan-datapusher
CMD ["uwsgi", "--plugin", "python", "--http-socket", "0.0.0.0:8004", "--wsgi-file", "/etc/ckan-datapusher/datapusher.wsgi", "--enable-threads"]

View File

@ -0,0 +1,16 @@
#!/sbin/openrc-run
description="CKAN DataPusher docker container"
depend() {
need docker net
use dns logger netmount
}
start() {
/usr/bin/docker run -d --rm --name ckan-datapusher -p 127.0.0.1:9004:8004 -v /srv/ckan-datapusher/conf:/etc/ckan-datapusher -v /srv/ckan-datapusher/data:/srv/ckan-datapusher/data ckan-datapusher
}
stop() {
/usr/bin/docker stop ckan
}

View File

@ -0,0 +1,9 @@
access_log /var/log/nginx/ckan-datapusher.access.log;
error_log /var/log/nginx/ckan-datapusher.error.log;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:9004;
}

View File

@ -0,0 +1,5 @@
server {
listen 127.0.0.1:8004;
listen [::1]:8004;
include apps/ckan-datapusher;
}

View File

@ -3,7 +3,7 @@
import os import os
import ckanserviceprovider.web as web import ckanserviceprovider.web as web
os.environ['JOB_CONFIG'] = '/etc/ckan/datapusher_settings.py' os.environ['JOB_CONFIG'] = '/etc/ckan-datapusher/datapusher_settings.py'
web.init() web.init()
import datapusher.jobs as jobs import datapusher.jobs as jobs

View File

@ -10,10 +10,10 @@ PASSWORD = str(uuid.uuid4())
NAME = 'datapusher' NAME = 'datapusher'
SQLALCHEMY_DATABASE_URI = 'sqlite:////srv/ckan-datapusher/jobs.db' SQLALCHEMY_DATABASE_URI = 'sqlite:////srv/ckan-datapusher/data/jobs.db'
HOST = '0.0.0.0' HOST = '0.0.0.0'
PORT = 8098 PORT = 8004
SSL_VERIFY = False SSL_VERIFY = False
FROM_EMAIL = 'ckan@spotter.ngo' FROM_EMAIL = 'ckan@spotter.ngo'

View File

@ -1,11 +0,0 @@
diff -ruN orig/python2.7/site-packages/ckanserviceprovider/web.py lib/python2.7/site-packages/ckanserviceprovider/web.py
--- orig/python2.7/site-packages/ckanserviceprovider/web.py 2017-12-01 08:55:57.595353323 +0100
+++ lib/python2.7/site-packages/ckanserviceprovider/web.py 2017-12-01 08:56:37.819592364 +0100
@@ -733,6 +733,7 @@
try:
result = requests.post(
result_url,
+ verify=False,
data=json.dumps(job_dict, cls=DatetimeJsonEncoder),
headers=headers)