diff options
-rw-r--r-- | Dockerfile | 48 | ||||
-rw-r--r-- | Dockerfile-base | 98 | ||||
-rw-r--r-- | conf/nginx.conf | 2 | ||||
-rw-r--r-- | conf/supervisord.conf | 16 | ||||
-rw-r--r-- | conf/uwsgi.ini | 1 | ||||
-rw-r--r-- | deploy/Dockerrun.aws.json | 2 | ||||
-rw-r--r-- | requirements/base.txt | 1 |
7 files changed, 124 insertions, 44 deletions
@@ -1,49 +1,15 @@ -FROM ubuntu-debootstrap:14.04 - -ENV omaha /srv/omaha - -RUN \ - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys ABF5BD827BD9BF62 && \ - echo 'deb http://nginx.org/packages/ubuntu/ trusty nginx' | tee --append /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y --no-install-recommends python-pip python-dev python-lxml python-psycopg2 supervisor nginx libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev python-pil build-essential libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool pkg-config libssl-dev wget tar && \ - apt-get clean && \ - apt-get autoremove -y && \ - rm -rf /var/lib/{apt,dpkg,cache,log}/ && \ - pip install uwsgi - -RUN \ - wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.78.tar.gz -O /usr/src/v1.78.tar.gz && \ - tar xvz -C /usr/src -f /usr/src/v1.78.tar.gz && \ - cd /usr/src/s3fs-fuse-1.78 && \ - ./autogen.sh && \ - ./configure --prefix=/usr && \ - make && \ - make install && \ - mkdir /srv/omaha_s3 && \ - rm /usr/src/v1.78.tar.gz - - -RUN mkdir -p $omaha/requirements -WORKDIR ${omaha} - -ADD ./requirements/base.txt $omaha/requirements/base.txt - -RUN \ - pip install paver && \ - pip install --upgrade six && \ - pip install -r requirements/base.txt +FROM crystalnix/omaha-server-base:alpine ADD . $omaha # setup all the configfiles RUN \ - mkdir /etc/nginx/sites-enabled/ && \ - rm /etc/nginx/conf.d/default.conf && \ - rm /etc/nginx/nginx.conf && \ - ln -s /srv/omaha/conf/nginx.conf /etc/nginx/ && \ - ln -s /srv/omaha/conf/nginx-app.conf /etc/nginx/sites-enabled/ && \ - ln -s /srv/omaha/conf/supervisord.conf /etc/supervisor/conf.d/ + mkdir /etc/nginx/sites-enabled/ && \ + mkdir /var/log/supervisor/ && \ + rm /etc/nginx/nginx.conf && \ + ln -s /srv/omaha/conf/nginx.conf /etc/nginx/ && \ + ln -s /srv/omaha/conf/nginx-app.conf /etc/nginx/sites-enabled/ && \ + ln -sfn /srv/omaha/conf/supervisord.conf /etc/ EXPOSE 80 CMD ["paver", "docker_run"] diff --git a/Dockerfile-base b/Dockerfile-base new file mode 100644 index 0000000..dc08c96 --- /dev/null +++ b/Dockerfile-base @@ -0,0 +1,98 @@ +FROM alpine:edge + +ENV omaha /srv/omaha + +# Build nginx 1.10 +RUN \ + build_pkgs="build-base linux-headers openssl-dev pcre-dev wget zlib-dev" && \ + runtime_pkgs="ca-certificates openssl pcre zlib" && \ + apk --update add ${build_pkgs} ${runtime_pkgs} && \ + cd /tmp && \ + wget http://nginx.org/download/nginx-1.10.0.tar.gz && \ + tar xzf nginx-1.10.0.tar.gz && \ + cd /tmp/nginx-1.10.0 && \ + ./configure \ + --prefix=/etc/nginx \ + --sbin-path=/usr/sbin/nginx \ + --conf-path=/etc/nginx/nginx.conf \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --pid-path=/var/run/nginx.pid \ + --lock-path=/var/run/nginx.lock \ + --http-client-body-temp-path=/var/cache/nginx/client_temp \ + --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ + --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ + --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ + --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ + --user=nginx \ + --group=nginx \ + --with-http_ssl_module \ + --with-http_realip_module \ + --with-http_addition_module \ + --with-http_sub_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_mp4_module \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_random_index_module \ + --with-http_secure_link_module \ + --with-http_stub_status_module \ + --with-http_auth_request_module \ + --with-mail \ + --with-mail_ssl_module \ + --with-file-aio \ + --with-http_v2_module \ + --with-ipv6 \ + --with-threads \ + --with-stream \ + --with-stream_ssl_module \ + --with-http_slice_module && \ + make && \ + make install && \ + sed -i -e 's/#access_log logs\/access.log main;/access_log \/dev\/stdout;/' -e 's/#error_log logs\/error.log notice;/error_log stderr notice;/' /etc/nginx/nginx.conf && \ + adduser -D nginx && \ + rm -rf /tmp/* && \ + apk del ${build_pkgs} && \ + rm -rf /var/cache/apk/* && \ + mkdir /var/cache/nginx/ && \ + chmod -R 777 /var/cache/nginx/ + +RUN apk --update add bash ca-certificates && \ + # apk --update add nginx python supervisor uwsgi uwsgi-python py-pip && \ + apk --update add python supervisor uwsgi uwsgi-python py-pip && \ + apk --update add --virtual dev-deps python-dev build-base && \ + apk --update add py-lxml py-psycopg2 py-pillow && \ + apk --update add fuse-dev libxml2-dev libcurl curl-dev libstdc++ && \ + apk --update add --virtual fuse-deps autoconf automake libtool pkgconfig openssl-dev wget tar && \ + + # Setup s3fs + mkdir /usr/src && \ + wget --no-check-certificate https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.78.tar.gz -O /usr/src/v1.78.tar.gz && \ + tar xvz -C /usr/src -f /usr/src/v1.78.tar.gz && \ + cd /usr/src/s3fs-fuse-1.78 && \ + ./autogen.sh && \ + ./configure --prefix=/usr && \ + make && \ + make install && \ + mkdir -p /srv/omaha_s3 && \ + rm /usr/src/v1.78.tar.gz && \ + + # cleanup + rm -rf /var/cache/apk/* && \ + apk del fuse-deps dev-deps && \ + + # prepare + mkdir -p $omaha/requirements + + +# RUN mkdir -p $omaha/requirements +WORKDIR ${omaha} + +ADD ./requirements/base.txt $omaha/requirements/base.txt + +RUN \ + pip install paver && \ + pip install --upgrade six && \ + pip install -r requirements/base.txt && \ + rm -rf /root/.cache/pip/ diff --git a/conf/nginx.conf b/conf/nginx.conf index efe9af0..4f2d0f4 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,4 +1,4 @@ -user www-data; +user nginx; worker_processes 2; pid /run/nginx.pid; daemon off; diff --git a/conf/supervisord.conf b/conf/supervisord.conf index a186f26..c7e15ac 100644 --- a/conf/supervisord.conf +++ b/conf/supervisord.conf @@ -1,15 +1,24 @@ [supervisord] nodaemon=true +logfile=/var/log/supervisord.log +loglevel=info + [program:nginx-app] command = /usr/sbin/nginx autostart=true autorestart=true +stdout_logfile=/var/log/supervisor/nginx.log +stderr_logfile=/var/log/supervisor/nginx.err.log + [program:omaha] -command=/usr/local/bin/uwsgi --ini /srv/omaha/conf/uwsgi.ini +command=/usr/sbin/uwsgi --ini /srv/omaha/conf/uwsgi.ini autostart=true autorestart=true +stdout_logfile=/var/log/supervisor/omaha.log +stderr_logfile=/var/log/supervisor/omaha.err.log + [program:celery] command=celery worker -B -A omaha_server --loglevel=INFO @@ -21,8 +30,13 @@ autorestart=true startsecs=10 stopwaitsecs = 600 killasgroup=true +stdout_logfile=/var/log/supervisor/celery.log +stderr_logfile=/var/log/supervisor/celery.err.log + [program:s3fs] command=/usr/bin/s3fs %(ENV_AWS_STORAGE_BUCKET_NAME)s /srv/omaha_s3 -f -ouse_cache=/tmp -oiam_role=%(ENV_AWS_ROLE)s autostart=true autorestart=true +stdout_logfile=/var/log/supervisor/s3fs.log +stderr_logfile=/var/log/supervisor/s3fs.err.log diff --git a/conf/uwsgi.ini b/conf/uwsgi.ini index dac8d63..1993a62 100644 --- a/conf/uwsgi.ini +++ b/conf/uwsgi.ini @@ -6,3 +6,4 @@ chunked-input-limit = 25000000 chunked-input-timeout = 300 socket-timeout = 300 buffer-size = 65535 +plugin = python diff --git a/deploy/Dockerrun.aws.json b/deploy/Dockerrun.aws.json index 53220f1..a1a8ef3 100644 --- a/deploy/Dockerrun.aws.json +++ b/deploy/Dockerrun.aws.json @@ -1,7 +1,7 @@ { "AWSEBDockerrunVersion": "1", "Image": { - "Name": "crystalnix/omaha-server:stable", + "Name": "crystalnix/omaha-server:feature-alpine-base-docker-image", "Update": "true" }, "Ports": [ diff --git a/requirements/base.txt b/requirements/base.txt index 90d9ddb..78c418a 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -31,6 +31,7 @@ django-bootstrap3==6.2.2 protobuf==3.0.0a3 protobuf-to-dict==0.1.0 django-dynamic-preferences==0.6.1 +requests==2.10.0 # Only dev #django-httplog==0.2.3 |