summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEgor Yurtaev <yurtaev.egor@gmail.com>2016-05-06 14:30:48 +0600
committerEgor Yurtaev <yurtaev.egor@gmail.com>2016-05-06 14:30:48 +0600
commit398c035714ef06fc0a261e6c79898ef1b8e64e37 (patch)
treee59e52eebe9ac3a5522b0a53417aeb060458e8ec
parent0958f8edb572b27002cb5841e1abc8d89d917f97 (diff)
downloadomaha-server-origin/feature/alpine-base-docker-image.zip
omaha-server-origin/feature/alpine-base-docker-image.tar.gz
omaha-server-origin/feature/alpine-base-docker-image.tar.bz2
Use alpine linux as base docker imageorigin/feature/alpine-base-docker-image
-rw-r--r--Dockerfile48
-rw-r--r--Dockerfile-base98
-rw-r--r--conf/nginx.conf2
-rw-r--r--conf/supervisord.conf16
-rw-r--r--conf/uwsgi.ini1
-rw-r--r--deploy/Dockerrun.aws.json2
-rw-r--r--requirements/base.txt1
7 files changed, 124 insertions, 44 deletions
diff --git a/Dockerfile b/Dockerfile
index e9cfe72..47c3c03 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -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