Skip to content

Commit

Permalink
Use alpine images instead of Python. (maxking#290)
Browse files Browse the repository at this point in the history
* Use alpine images instead of Python.

* Minor fix to use python3 -m pip

* Fix settings for paintstore.
  • Loading branch information
maxking authored Jan 21, 2019
1 parent c1dabd0 commit c5d84bf
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 37 deletions.
11 changes: 6 additions & 5 deletions core/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.6-alpine
FROM alpine:3.8

MAINTAINER Abhilash Raj

Expand All @@ -7,10 +7,11 @@ 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 \
&& apk add --virtual build-deps gcc python3-dev musl-dev postgresql-dev libffi-dev \
&& apk add bash su-exec postgresql-client mysql-client curl \
&& pip install -U pip \
&& pip install psycopg2 \
&& apk add --virtual build-deps gcc python3-dev musl-dev postgresql-dev \
libffi-dev \
&& apk add --no-cache bash su-exec postgresql-client mysql-client curl python py3-setuptools \
&& python3 -m pip install -U pip \
&& python3 -m pip install psycopg2 \
mailman==3.2 \
mailman-hyperkitty==1.1.0 \
pymysql \
Expand Down
13 changes: 7 additions & 6 deletions core/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.6-alpine
FROM alpine:3.8

MAINTAINER Abhilash Raj

Expand All @@ -13,11 +13,12 @@ ARG MM3_HK_REF
#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 postgresql-dev git libffi-dev \
&& apk add bash su-exec postgresql-client mysql-client curl \
&& pip install -U psycopg2 pymysql \
git+https://gitlab.com/mailman/mailman@${CORE_REF} \
git+https://gitlab.com/mailman/mailman-hyperkitty@${MM3_HK_REF} \
&& apk add --no-cache --virtual build-deps gcc python3-dev musl-dev \
postgresql-dev git libffi-dev \
&& apk add --no-cache bash su-exec postgresql-client mysql-client curl python3 py3-setuptools \
&& python3 -m pip install -U psycopg2 pymysql \
git+https://gitlab.com/mailman/mailman@${CORE_REF} \
git+https://gitlab.com/mailman/mailman-hyperkitty@${MM3_HK_REF} \
&& apk del build-deps \
&& adduser -S mailman

Expand Down
2 changes: 1 addition & 1 deletion core/docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -e
function wait_for_postgres () {
# Check if the postgres database is up and accepting connections before
# moving forward.
# TODO: Use python's psycopg2 module to do this in python instead of
# TODO: Use python3's psycopg2 module to do this in python3 instead of
# installing postgres-client in the image.
until psql $DATABASE_URL -c '\l'; do
>&2 echo "Postgres is unavailable - sleeping"
Expand Down
3 changes: 1 addition & 2 deletions web/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,5 @@ EXPOSE 8000 8080
STOPSIGNAL SIGINT

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"]

ENV PYTHONPATH=/usr/lib/python3.6/site-packages
CMD ["uwsgi", "--ini", "/opt/mailman-web/uwsgi.ini"]
44 changes: 24 additions & 20 deletions web/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.6-alpine3.7
FROM alpine:3.8

MAINTAINER Abhilash Raj

Expand All @@ -16,25 +16,29 @@ ARG CLIENT_REF
# executing apps, change ownership for uwsgi+django files and set execution
# rights for management script
RUN set -ex \
&& apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers git \
postgresql-dev mariadb-dev \
&& apk add --no-cache --virtual .mailman-rundeps bash sassc \
postgresql-client mysql-client py-mysqldb curl mailcap \
&& pip install -U git+https://gitlab.com/mailman/mailmanclient@${CLIENT_REF} \
git+https://gitlab.com/mailman/postorius@${POSTORIUS_REF} \
git+https://gitlab.com/mailman/hyperkitty@${HYPERKITTY_REF} \
whoosh \
uwsgi \
psycopg2 \
dj-database-url \
mysqlclient \
&& pip install -U django>=1.11\
&& pip install -U git+https://gitlab.com/mailman/django-mailman3@${DJ_MM3_REF} \
&& apk del .build-deps \
&& addgroup -S mailman \
&& adduser -S -G mailman mailman \
&& chown -R mailman /opt/mailman-web/ \
&& chmod u+x /opt/mailman-web/manage.py
&& apk add --no-cache --virtual .build-deps gcc libc-dev linux-headers git \
postgresql-dev mariadb-dev python3-dev \
&& apk add --no-cache --virtual .mailman-rundeps bash sassc \
python3 py3-setuptools postgresql-client mysql-client py-mysqldb\
curl mailcap xapian-core xapian-bindings-python3 \
&& python3 -m pip install -U \
git+https://gitlab.com/mailman/mailmanclient@${CLIENT_REF} \
git+https://gitlab.com/mailman/postorius@${POSTORIUS_REF} \
git+https://gitlab.com/mailman/hyperkitty@${HYPERKITTY_REF} \
whoosh \
uwsgi \
psycopg2 \
dj-database-url \
mysqlclient \
xapian-haystack \
&& python3 -m pip install -U django>=1.11\
&& python3 -m pip install -U \
git+https://gitlab.com/mailman/django-mailman3@${DJ_MM3_REF} \
&& apk del .build-deps \
&& addgroup -S mailman \
&& adduser -S -G mailman mailman \
&& chown -R mailman /opt/mailman-web/ \
&& chmod u+x /opt/mailman-web/manage.py

WORKDIR /opt/mailman-web

Expand Down
15 changes: 12 additions & 3 deletions web/mailman-web/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@

# Application definition

INSTALLED_APPS = (
INSTALLED_APPS = [
'hyperkitty',
'postorius',
'django_mailman3',
Expand All @@ -81,7 +81,6 @@
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'paintstore',
'compressor',
'haystack',
'django_extensions',
Expand All @@ -94,7 +93,17 @@
'allauth.socialaccount.providers.github',
'allauth.socialaccount.providers.gitlab',
'allauth.socialaccount.providers.google',
)
]

# Optionally include paintstore, if it was installed with Hyperkitty.
# TODO: Remove this after a new version of Hyperkitty is released and
# neither the stable nor the rolling version needs it.
try:
import paintstore
INSTALLED_APPS.append('paintstore')
except ImportError:
pass


_MIDDLEWARE = (
'django.contrib.sessions.middleware.SessionMiddleware',
Expand Down

0 comments on commit c5d84bf

Please sign in to comment.