forked from RainLoop/rainloop-webmail
-
-
Notifications
You must be signed in to change notification settings - Fork 122
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Akhil <akhil@e.email>
- Loading branch information
Showing
1,730 changed files
with
118,840 additions
and
63,055 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,188 @@ | ||
# syntax=docker/dockerfile:1 | ||
|
||
FROM alpine:3.18.5 AS builder | ||
RUN apk add --no-cache php82 php82-json php-phar php-zip | ||
RUN apk add --no-cache npm | ||
RUN npm install -g gulp yarn | ||
WORKDIR /source | ||
COPY package.json yarn.lock ./ | ||
RUN yarn install | ||
COPY . . | ||
# Patch release.php with hotfix from: https://github.com/xgbstar1/snappymail-docker/blob/main/Dockerfile, so that release.php doesn't fail with error | ||
RUN sed -i 's_^if.*rename.*snappymail.v.0.0.0.*$_if (!!system("mv snappymail/v/0.0.0 snappymail/v/{$package->version}")) {_' cli/release.php || true | ||
RUN php release.php | ||
RUN set -eux; \ | ||
VERSION=$( ls build/dist/releases/webmail ); \ | ||
ls -al build/dist/releases/webmail/$VERSION/snappymail-$VERSION.tar.gz; \ | ||
mkdir -p /snappymail; \ | ||
tar -zxvf build/dist/releases/webmail/$VERSION/snappymail-$VERSION.tar.gz -C /snappymail; \ | ||
find /snappymail -type d -exec chmod 550 {} \; ; \ | ||
find /snappymail -type f -exec chmod 440 {} \; ; \ | ||
find /snappymail/data -type d -exec chmod 750 {} \; ; \ | ||
# Remove unneeded files | ||
rm -v /snappymail/README.md /snappymail/_include.php | ||
|
||
# Inspired by the original Rainloop dockerfile from youtous on GitLab | ||
FROM php:8.1-fpm-bullseye | ||
FROM php:8.2-fpm-alpine AS final | ||
|
||
ARG FILES_ZIP | ||
LABEL org.label-schema.description="SnappyMail webmail client image using nginx, php-fpm on Alpine" | ||
|
||
# Install dependencies such as nginx | ||
RUN apk add --no-cache ca-certificates nginx supervisor bash | ||
|
||
# Install PHP extensions | ||
# apcu | ||
RUN set -eux; \ | ||
apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \ | ||
pecl install apcu; \ | ||
docker-php-ext-enable apcu; \ | ||
docker-php-source delete; \ | ||
apk del .build-dependencies; | ||
|
||
LABEL org.label-schema.description="SnappyMail webmail client image using nginx, php-fpm based on Debian Buster" | ||
# gd | ||
RUN set -eux; \ | ||
apk add --no-cache freetype libjpeg-turbo libpng; \ | ||
apk add --no-cache --virtual .deps freetype-dev libjpeg-turbo-dev libpng-dev; \ | ||
docker-php-ext-configure gd --with-freetype --with-jpeg; \ | ||
docker-php-ext-install gd; \ | ||
apk del .deps | ||
|
||
ENV UID=991 GID=991 UPLOAD_MAX_SIZE=25M LOG_TO_STDERR=true MEMORY_LIMIT=128M SECURE_COOKIES=true | ||
ENV fpm.pool.clear_env=false | ||
# gmagick | ||
# RUN set -eux; \ | ||
# apk add --no-cache graphicsmagick libgomp; \ | ||
# apk add --no-cache --virtual .deps graphicsmagick-dev libtool; \ | ||
# apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \ | ||
# pecl install gmagick-2.0.6RC1; \ | ||
# docker-php-ext-enable gmagick; \ | ||
# docker-php-source delete; \ | ||
# apk del .build-dependencies; \ | ||
# apk del .deps | ||
|
||
# Install dependencies such as nginx | ||
RUN mkdir -p /usr/share/man/man1/ /usr/share/man/man3/ /usr/share/man/man7/ && \ | ||
apt-get update -q --fix-missing && \ | ||
apt-get -y upgrade && \ | ||
apt-get install --no-install-recommends -y \ | ||
apt-transport-https gnupg openssl wget curl ca-certificates nginx supervisor sudo \ | ||
unzip libzip-dev libxml2-dev libldb-dev libldap2-dev \ | ||
sqlite3 libsqlite3-dev libsqlite3-0 libpq-dev postgresql-client mariadb-client logrotate \ | ||
zip mlocate libpcre3-dev libicu-dev \ | ||
build-essential chrpath libssl-dev \ | ||
libxft-dev libfreetype6 libfreetype6-dev \ | ||
libpng-dev libjpeg62-turbo-dev \ | ||
libfontconfig1 libfontconfig1-dev \ | ||
&& \ | ||
rm -rf /var/lib/apt/lists/* | ||
# gnupg | ||
RUN set -eux; \ | ||
apk add --no-cache gnupg gpgme; \ | ||
apk add --no-cache --virtual .deps gpgme-dev; \ | ||
apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \ | ||
pecl install gnupg; \ | ||
docker-php-ext-enable gnupg; \ | ||
docker-php-source delete; \ | ||
apk del .build-dependencies; \ | ||
apk del .deps | ||
|
||
# Install PHP extensions | ||
RUN php -m && \ | ||
docker-php-ext-configure ldap --with-libdir=lib/$(uname -m)-linux-gnu/ && \ | ||
docker-php-ext-configure intl && \ | ||
docker-php-ext-configure gd --with-freetype --with-jpeg && \ | ||
docker-php-ext-install ldap opcache pdo_mysql pdo_pgsql zip intl gd && \ | ||
php -m | ||
# imagick | ||
RUN set -eux; \ | ||
apk add --no-cache imagemagick libgomp; \ | ||
apk add --no-cache --virtual .deps imagemagick-dev; \ | ||
apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \ | ||
echo | pecl install imagick; \ | ||
docker-php-ext-enable imagick; \ | ||
docker-php-source delete; \ | ||
apk del .build-dependencies; \ | ||
apk del .deps | ||
|
||
# intl | ||
RUN set -eux; \ | ||
apk add --no-cache icu-libs; \ | ||
apk add --no-cache --virtual .deps icu-dev; \ | ||
docker-php-ext-configure intl; \ | ||
docker-php-ext-install intl; \ | ||
apk del .deps | ||
|
||
# ldap | ||
RUN set -eux; \ | ||
apk add --no-cache libldap; \ | ||
apk add --no-cache --virtual .deps openldap-dev; \ | ||
docker-php-ext-configure ldap; \ | ||
docker-php-ext-install ldap; \ | ||
apk del .deps | ||
|
||
# mysql | ||
RUN docker-php-ext-install pdo_mysql | ||
|
||
# opcache | ||
RUN docker-php-ext-install opcache | ||
|
||
# postgres | ||
RUN set -eux; \ | ||
apk add --no-cache postgresql-libs; \ | ||
apk add --no-cache --virtual .deps postgresql-dev; \ | ||
docker-php-ext-install pdo_pgsql; \ | ||
apk del .deps | ||
|
||
# redis | ||
RUN set -eux; \ | ||
apk add --no-cache liblzf zstd-libs; \ | ||
apk add --no-cache --virtual .deps zstd-dev; \ | ||
apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \ | ||
pecl install igbinary; \ | ||
docker-php-ext-enable igbinary; \ | ||
pecl install --configureoptions 'enable-redis-igbinary="yes" enable-redis-lzf="yes" enable-redis-zstd="yes"' redis; \ | ||
docker-php-ext-enable redis; \ | ||
docker-php-source delete; \ | ||
apk del .build-dependencies; \ | ||
apk del .deps | ||
|
||
# tidy | ||
RUN set -eux; \ | ||
apk add --no-cache tidyhtml; \ | ||
apk add --no-cache --virtual .deps tidyhtml-dev; \ | ||
docker-php-ext-install tidy; \ | ||
apk del .deps | ||
|
||
# uuid | ||
RUN set -eux; \ | ||
apk add --no-cache libuuid; \ | ||
apk add --no-cache --virtual .deps util-linux-dev; \ | ||
apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \ | ||
pecl install uuid; \ | ||
docker-php-ext-enable uuid; \ | ||
docker-php-source delete; \ | ||
apk del .build-dependencies; \ | ||
apk del .deps | ||
|
||
# xxtea - Manually install php8 compatible version from https://github.com/xxtea/xxtea-pecl master branch | ||
RUN set -eux; \ | ||
apk add --no-cache --virtual .build-dependencies $PHPIZE_DEPS; \ | ||
wget -q https://github.com/xxtea/xxtea-pecl/tarball/3f5888a29045e12301254151737c5dab4523a1c1 -O xxtea.tar; \ | ||
echo '9cbfd9c27255767deb26ddedf69e738d401d88ac9762d82c8510f9768842ca18 xxtea.tar' | sha256sum -c -; \ | ||
tar -C /usr/src -xvf xxtea.tar; \ | ||
cd /usr/src/xxtea-xxtea-pecl-3f5888a; \ | ||
phpize; \ | ||
./configure --with-php-config=/usr/local/bin/php-config --enable-xxtea=yes; \ | ||
make install; \ | ||
docker-php-ext-enable xxtea; \ | ||
cd -; \ | ||
rm -fv xxtea.tar; \ | ||
rm -rfv /usr/src/xxtea*; \ | ||
apk del .build-dependencies; | ||
|
||
# zip | ||
RUN set -eux; \ | ||
apk add --no-cache libzip; \ | ||
apk add --no-cache --virtual .deps libzip-dev; \ | ||
docker-php-ext-install zip; \ | ||
apk del .deps | ||
|
||
# Install snappymail | ||
WORKDIR /tmp | ||
COPY ${FILES_ZIP} . | ||
RUN mkdir /snappymail && \ | ||
unzip -q ${FILES_ZIP} -d /snappymail && \ | ||
find /snappymail -type d -exec chmod 755 {} \; && \ | ||
find /snappymail -type f -exec chmod 644 {} \; && \ | ||
rm -rf ${FILES_ZIP} | ||
|
||
# Install other content | ||
COPY files / | ||
RUN chmod +x /entrypoint.sh && chmod +x /logrotate-loop.sh | ||
VOLUME /snappymail/data | ||
# The 'www-data' user/group in alpine is 82:82. The 'nginx' user/group in alpine is 101:101, and is part of www-data group | ||
COPY --chown=www-data:www-data --from=builder /snappymail /snappymail | ||
# Use a custom snappymail data folder | ||
RUN mv -v /snappymail/data /var/lib/snappymail; | ||
# Setup configs | ||
COPY --chown=root:root .docker/release/files / | ||
RUN set -eux; \ | ||
chown www-data:www-data /snappymail/include.php; \ | ||
chmod 440 /snappymail/include.php; \ | ||
chmod +x /entrypoint.sh; \ | ||
# Disable the built-in php-fpm configs, since we're using our own config | ||
mv -v /usr/local/etc/php-fpm.d/docker.conf /usr/local/etc/php-fpm.d/docker.conf.disabled; \ | ||
mv -v /usr/local/etc/php-fpm.d/www.conf /usr/local/etc/php-fpm.d/www.conf.disabled; \ | ||
mv -v /usr/local/etc/php-fpm.d/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf.disabled; | ||
|
||
USER root | ||
WORKDIR /snappymail | ||
VOLUME /var/lib/snappymail | ||
EXPOSE 8888 | ||
EXPOSE 9000 | ||
ENTRYPOINT [] | ||
CMD ["/entrypoint.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.