From f6f4d36d64a61c5453ec8288f0f2b28bf93d665f Mon Sep 17 00:00:00 2001 From: Christian Rose Date: Fri, 14 Jul 2017 01:53:22 +0200 Subject: [PATCH] Merge PR from @chrros95 Several Changes: - Uwsgi now listens on two sockets 8080 for http protocol and 8000 for uwsgi protocol - Add a read_timeout in documentation for Nginx configuration - Expose 8024 properly in Core image - Expose 8080 and 8000 both in Web image - Rearange the commands to get even less number of layers. - Add SIGINT as stop signal in web because uwsgi needs it shut down gracefully - Enable threads in default uwsgi configuration Fix #64, Fix #15 --- README.md | 4 ++-- core/Dockerfile | 22 +++++++++++----------- tests/test.sh | 4 ++-- web/Dockerfile | 27 +++++++++++++++++---------- web/mailman-web/uwsgi.ini | 6 +++++- 5 files changed, 37 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 3a738a2..4e697ba 100644 --- a/README.md +++ b/README.md @@ -309,7 +309,7 @@ server { # First attempt to serve request as file, then include uwsgi_params; uwsgi_pass 172.19.199.3:8000; - + uwsgi_read_timeout 300; } } @@ -369,4 +369,4 @@ more details. [11]: https://mailman.readthedocs.io/en/latest/src/mailman/docs/database.html [12]: http://www.postfix.org/ [13]: http://semver.org/ -[14]: https://docs.docker.com/engine/security/trust/content_trust/ +[14]: https://docs.docker.com/engine/security/trust/content_trust/ \ No newline at end of file diff --git a/core/Dockerfile b/core/Dockerfile index fa30fbb..7f74f92 100644 --- a/core/Dockerfile +++ b/core/Dockerfile @@ -2,25 +2,25 @@ FROM python:3.6-alpine MAINTAINER Abhilash Raj -# Install the latest master branch of the mailman directly -# from the Gitlab. +#Add startup script to container +ADD assets/run.sh /opt/run.sh + +#Install all required packages, add user for executing mailman and set execution rights for startup script RUN apk update \ && apk add --virtual build-deps gcc python3-dev musl-dev \ && apk add postgresql-dev bash su-exec postgresql-client \ && pip install psycopg2 mailman==3.1.0 mailman-hyperkitty==1.1.0 \ - && apk del build-deps - -ADD assets/run.sh /opt/run.sh + && apk del build-deps \ + && adduser -S mailman \ + && chmod a+x /opt/run.sh # Change the working directory. WORKDIR /opt/mailman -EXPOSE 8001 - -ENTRYPOINT ["/opt/run.sh"] +#Expose the ports for the api (8001) and lmtp (8024) +EXPOSE 8001 8024 ENV MAILMAN_CONFIG_FILE /etc/mailman.cfg -RUN adduser -S mailman - -CMD ["/usr/local/bin/master"] +ENTRYPOINT ["/opt/run.sh"] +CMD ["/usr/local/bin/master"] \ No newline at end of file diff --git a/tests/test.sh b/tests/test.sh index c3bf826..b026ddb 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -5,7 +5,7 @@ set -e curl -u restadmin:restpass http://172.19.199.2:8001/3.1/system # Check to see if postorius is working. -curl -L http://172.19.199.3:8000/postorius/lists | grep "Mailing List" +curl -L http://172.19.199.3:8080/postorius/lists | grep "Mailing List" # Check to see if hyperkitty is working. -curl -L http://172.19.199.3:8000/hyperkitty/ | grep "Available lists" +curl -L http://172.19.199.3:8080/hyperkitty/ | grep "Available lists" diff --git a/web/Dockerfile b/web/Dockerfile index 5659d37..10bdacb 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -3,7 +3,13 @@ FROM python:2.7 MAINTAINER Abhilash Raj ENV DEBIAN_FRONTEND=noninteractive +# 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 \ @@ -18,18 +24,19 @@ RUN apt-get update \ psycopg2 \ dj-database-url \ pymysql \ - && python -m pip install -U django==1.10 - -ADD mailman-web /opt/mailman-web - -RUN useradd -M -U -u 1000 mailman - -ADD assets/run.sh /opt/run.sh + && 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 WORKDIR /opt/mailman-web -EXPOSE 8000 +# Expose port 8000 for uwsgi and port 8080 for http +EXPOSE 8000 8080 + +# Use stop signal for uwsgi server +STOPSIGNAL SIGINT ENTRYPOINT ["/opt/run.sh"] - -CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"] +CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"] \ No newline at end of file diff --git a/web/mailman-web/uwsgi.ini b/web/mailman-web/uwsgi.ini index 0b488bc..c778c0d 100644 --- a/web/mailman-web/uwsgi.ini +++ b/web/mailman-web/uwsgi.ini @@ -1,6 +1,10 @@ [uwsgi] # Port on which uwsgi will be listening. -http = :8000 +uwsgi-socket = 0.0.0.0:8000 +http-socket = 0.0.0.0:8080 + +#Enable threading for python +enable-threads = true # Move to the directory wher the django files are. chdir = /opt/mailman-web