From 21ba540e5b00cdbbfb32919940b4d520b03b7771 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 27 Jul 2017 17:36:33 +0900 Subject: [PATCH 1/5] Migrate mailman-web to Alpine --- web/Dockerfile | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/web/Dockerfile b/web/Dockerfile index 10bdacb..09e36bf 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -1,34 +1,33 @@ -FROM python:2.7 +FROM python:2.7-alpine3.6 MAINTAINER Abhilash Raj -ENV DEBIAN_FRONTEND=noninteractive -# Add needed files for uwsgi server + settings for django +# Add needed files for uwsgi server + settings for django ADD mailman-web /opt/mailman-web # Add startup script to container ADD assets/run.sh /opt/run.sh # Install packages and dependencies for postorius and hyperkitty # Add user for executing apps, change ownership for uwsgi+django files and set execution rights for management script -RUN apt-get update \ - && apt-get install -y --no-install-recommends ruby-sass \ - wget \ - postgresql-client \ - && rm -rf /var/lib/apt/lists/* \ - && python -m pip install -U mailmanclient==3.1.0 \ - postorius==1.1.0 \ - hyperkitty==1.1.0 \ - django-mailman3==1.1.0 \ - whoosh \ - uwsgi \ - psycopg2 \ - dj-database-url \ - pymysql \ - && python -m pip install -U django==1.10 \ - && useradd -M -U -u 1000 mailman \ - && chmod u+x /opt/run.sh \ - && chown mailman /opt/mailman-web/* \ - && chmod u+x /opt/mailman-web/manage.py +RUN set -ex \ + && apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers postgresql-dev \ + && apk add --no-cache --virtual .mailman-rundeps bash sassc postgresql-client \ + && pip install -U mailmanclient==3.1.0 \ + postorius==1.1.0 \ + hyperkitty==1.1.0 \ + django-mailman3==1.1.0 \ + whoosh \ + uwsgi \ + psycopg2 \ + dj-database-url \ + pymysql \ + && pip install -U django==1.10 \ + && apk del --no-cache .build-deps \ + && addgroup -S mailman \ + && adduser -S -G mailman mailman \ + && chmod u+x /opt/run.sh \ + && chown -R mailman /opt/mailman-web/ \ + && chmod u+x /opt/mailman-web/manage.py WORKDIR /opt/mailman-web @@ -39,4 +38,4 @@ EXPOSE 8000 8080 STOPSIGNAL SIGINT ENTRYPOINT ["/opt/run.sh"] -CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"] \ No newline at end of file +CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"] From 150a514bd46df037244bf60ce85038ee678902f0 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 27 Jul 2017 17:39:40 +0900 Subject: [PATCH 2/5] Use Alpine for postgres --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 5d740da..a4b2200 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -45,7 +45,7 @@ services: POSTGRES_USER: mailman POSTGRES_PASSWORD: mailmanpass restart: always - image: postgres:9.6 + image: postgres:9.6-alpine volumes: - /opt/mailman/database:/var/lib/postgresql/data networks: From 6d79d911429ee526f9ae2a95fc0582d11616401e Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 27 Jul 2017 18:17:44 +0900 Subject: [PATCH 3/5] uWSGI: use string uid/gid --- web/mailman-web/uwsgi.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/mailman-web/uwsgi.ini b/web/mailman-web/uwsgi.ini index be9fca9..4a24c52 100644 --- a/web/mailman-web/uwsgi.ini +++ b/web/mailman-web/uwsgi.ini @@ -18,8 +18,8 @@ process = 2 threads = 2 # Drop privielges and don't run as root. -uid = 1000 -gid = 1000 +uid = mailman +gid = mailman # Setup the django_q related worker processes. attach-daemon = ./manage.py qcluster From a757df8f553a0b63c7fe11cc4e903ed3163e0575 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 27 Jul 2017 19:40:21 +0900 Subject: [PATCH 4/5] Use sassc for django-compressor --- web/mailman-web/settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/mailman-web/settings.py b/web/mailman-web/settings.py index a7ebba1..dca9c8f 100644 --- a/web/mailman-web/settings.py +++ b/web/mailman-web/settings.py @@ -281,8 +281,8 @@ SOCIALACCOUNT_PROVIDERS = { # COMPRESS_PRECOMPILERS = ( ('text/less', 'lessc {infile} {outfile}'), - ('text/x-scss', 'sass -t compressed {infile} {outfile}'), - ('text/x-sass', 'sass -t compressed {infile} {outfile}'), + ('text/x-scss', 'sassc -t compressed {infile} {outfile}'), + ('text/x-sass', 'sassc -t compressed {infile} {outfile}'), ) # On a production setup, setting COMPRESS_OFFLINE to True will bring a From 5b20021b91f21d9ce8ad3ec39fabcfa7f553dc8c Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 27 Jul 2017 19:57:31 +0900 Subject: [PATCH 5/5] Rename entrypoint script --- core/Dockerfile | 9 ++++----- core/{assets/run.sh => docker-entrypoint.sh} | 0 web/Dockerfile | 7 +++---- web/{assets/run.sh => docker-entrypoint.sh} | 0 4 files changed, 7 insertions(+), 9 deletions(-) rename core/{assets/run.sh => docker-entrypoint.sh} (100%) rename web/{assets/run.sh => docker-entrypoint.sh} (100%) diff --git a/core/Dockerfile b/core/Dockerfile index 653afbc..b4907cf 100644 --- a/core/Dockerfile +++ b/core/Dockerfile @@ -3,7 +3,7 @@ FROM python:3.6-alpine MAINTAINER Abhilash Raj #Add startup script to container -ADD assets/run.sh /opt/run.sh +COPY docker-entrypoint.sh /usr/local/bin/ #Install all required packages, add user for executing mailman and set execution rights for startup script RUN apk update \ @@ -12,8 +12,7 @@ RUN apk update \ && pip install psycopg2 mailman==3.1.0 mailman-hyperkitty==1.1.0 \ && pip install pymysql \ && apk del build-deps \ - && adduser -S mailman \ - && chmod a+x /opt/run.sh + && adduser -S mailman # Change the working directory. WORKDIR /opt/mailman @@ -23,5 +22,5 @@ EXPOSE 8001 8024 ENV MAILMAN_CONFIG_FILE /etc/mailman.cfg -ENTRYPOINT ["/opt/run.sh"] -CMD ["/usr/local/bin/master"] +ENTRYPOINT ["docker-entrypoint.sh"] +CMD ["master"] diff --git a/core/assets/run.sh b/core/docker-entrypoint.sh similarity index 100% rename from core/assets/run.sh rename to core/docker-entrypoint.sh diff --git a/web/Dockerfile b/web/Dockerfile index 09e36bf..dde5723 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -3,9 +3,9 @@ FROM python:2.7-alpine3.6 MAINTAINER Abhilash Raj # Add needed files for uwsgi server + settings for django -ADD mailman-web /opt/mailman-web +COPY mailman-web /opt/mailman-web # Add startup script to container -ADD assets/run.sh /opt/run.sh +COPY docker-entrypoint.sh /usr/local/bin/ # Install packages and dependencies for postorius and hyperkitty # Add user for executing apps, change ownership for uwsgi+django files and set execution rights for management script @@ -25,7 +25,6 @@ RUN set -ex \ && apk del --no-cache .build-deps \ && addgroup -S mailman \ && adduser -S -G mailman mailman \ - && chmod u+x /opt/run.sh \ && chown -R mailman /opt/mailman-web/ \ && chmod u+x /opt/mailman-web/manage.py @@ -37,5 +36,5 @@ EXPOSE 8000 8080 # Use stop signal for uwsgi server STOPSIGNAL SIGINT -ENTRYPOINT ["/opt/run.sh"] +ENTRYPOINT ["docker-entrypoint.sh"] CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"] diff --git a/web/assets/run.sh b/web/docker-entrypoint.sh similarity index 100% rename from web/assets/run.sh rename to web/docker-entrypoint.sh