Skip to content

Commit 19d3bcd

Browse files
committed
Add php-fpm flavour
1 parent 2a66100 commit 19d3bcd

3 files changed

Lines changed: 139 additions & 1 deletion

File tree

‎php-apache/docker-entrypoint.sh‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then
6868
\$config['default_port'] = '${ROUNDCUBEMAIL_DEFAULT_PORT}';
6969
\$config['smtp_server'] = '${ROUNDCUBEMAIL_SMTP_SERVER}';
7070
\$config['smtp_port'] = '${ROUNDCUBEMAIL_SMTP_PORT}';
71-
\$config['log_dir'] = '${ROUNDCUBEMAIL_LOG_DIR}';
7271
\$config['temp_dir'] = '${ROUNDCUBEMAIL_TEMP_DIR}';
7372
\$config['plugins'] = ['${ROUNDCUBEMAIL_PLUGINS_PHP}'];
7473
\$config['zipdownload_selection'] = true;

‎php-fpm/Dockerfile‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
FROM php:7.1-fpm
2+
MAINTAINER Thomas Bruederli <thomas@roundcube.net>
3+
4+
RUN apt-get -qq update \
5+
&& apt-get install -qq \
6+
libfreetype6-dev \
7+
libicu-dev \
8+
libjpeg62-turbo-dev \
9+
libldap2-dev \
10+
libpng-dev \
11+
libpq-dev \
12+
libsqlite3-dev \
13+
zlib1g-dev \
14+
&& rm -rf /var/lib/apt/lists/*
15+
RUN docker-php-ext-install -j$(nproc) exif intl pdo pdo_mysql pdo_pgsql pdo_sqlite zip
16+
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j$(nproc) gd
17+
RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && docker-php-ext-install -j$(nproc) ldap
18+
19+
# expose these volumes
20+
VOLUME /var/roundcube/config
21+
VOLUME /var/www/html
22+
23+
# Define Roundcubemail version
24+
ENV ROUNDCUBEMAIL_VERSION 1.3.4
25+
26+
# Download package and extract to web volume
27+
RUN curl -o roundcubemail.tar.gz -SL https://github.com/roundcube/roundcubemail/releases/download/${ROUNDCUBEMAIL_VERSION}/roundcubemail-${ROUNDCUBEMAIL_VERSION}-complete.tar.gz \
28+
&& curl -o roundcubemail.tar.gz.asc -SL https://github.com/roundcube/roundcubemail/releases/download/${ROUNDCUBEMAIL_VERSION}/roundcubemail-${ROUNDCUBEMAIL_VERSION}-complete.tar.gz.asc \
29+
&& export GNUPGHOME="$(mktemp -d)" \
30+
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys F3E4C04BB3DB5D4215C45F7F5AB2BAA141C4F7D5 \
31+
&& gpg --batch --verify roundcubemail.tar.gz.asc roundcubemail.tar.gz \
32+
&& rm -r "$GNUPGHOME" roundcubemail.tar.gz.asc \
33+
&& tar -xzf roundcubemail.tar.gz -C /usr/src/ \
34+
# upstream tarballs include ./roundcubemail-${ROUNDCUBEMAIL_VERSION}/ so this gives us /usr/src/roundcubemail-${ROUNDCUBEMAIL_VERSION}
35+
&& mv /usr/src/roundcubemail-${ROUNDCUBEMAIL_VERSION} /usr/src/roundcubemail \
36+
&& rm -rf /usr/src/roundcubemail/installer \
37+
&& rm roundcubemail.tar.gz
38+
39+
# include the wait-for-it.sh script
40+
RUN curl https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh > /wait-for-it.sh && chmod +x /wait-for-it.sh
41+
42+
COPY docker-entrypoint.sh /
43+
44+
ENTRYPOINT ["/docker-entrypoint.sh"]
45+
CMD ["php-fpm"]
46+

‎php-fpm/docker-entrypoint.sh‎

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/bin/bash
2+
# set -ex
3+
4+
# PWD=`pwd`
5+
6+
if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then
7+
if ! [ -e index.php -a -e bin/installto.sh ]; then
8+
echo >&2 "roundcubemail not found in $PWD - copying now..."
9+
if [ "$(ls -A)" ]; then
10+
echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!"
11+
( set -x; ls -A; sleep 10 )
12+
fi
13+
tar cf - --one-file-system -C /usr/src/roundcubemail . | tar xf -
14+
sed -i 's/mod_php5.c/mod_php7.c/' .htaccess
15+
echo >&2 "Complete! ROUNDCUBEMAIL has been successfully copied to $PWD"
16+
fi
17+
18+
if [ ! -z "${!POSTGRES_ENV_POSTGRES_*}" ] || [ $ROUNDCUBEMAIL_DB_TYPE == "pgsql" ]; then
19+
: "${ROUNDCUBEMAIL_DB_TYPE:=pgsql}"
20+
: "${ROUNDCUBEMAIL_DB_HOST:=postgres}"
21+
: "${ROUNDCUBEMAIL_DB_USER:=${POSTGRES_ENV_POSTGRES_USER}}"
22+
: "${ROUNDCUBEMAIL_DB_PASSWORD:=${POSTGRES_ENV_POSTGRES_PASSWORD}}"
23+
: "${ROUNDCUBEMAIL_DB_NAME:=${POSTGRES_ENV_POSTGRES_DB:-roundcubemail}}"
24+
: "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}://${ROUNDCUBEMAIL_DB_USER}:${ROUNDCUBEMAIL_DB_PASSWORD}@${ROUNDCUBEMAIL_DB_HOST}/${ROUNDCUBEMAIL_DB_NAME}}"
25+
26+
/wait-for-it.sh ${ROUNDCUBEMAIL_DB_HOST}:5432 -t 30
27+
elif [ ! -z "${!MYSQL_ENV_MYSQL_*}" ] || [ $ROUNDCUBEMAIL_DB_TYPE == "mysql" ]; then
28+
: "${ROUNDCUBEMAIL_DB_TYPE:=mysql}"
29+
: "${ROUNDCUBEMAIL_DB_HOST:=mysql}"
30+
: "${ROUNDCUBEMAIL_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}"
31+
if [ "$ROUNDCUBEMAIL_DB_USER" = 'root' ]; then
32+
: "${ROUNDCUBEMAIL_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD}}"
33+
else
34+
: "${ROUNDCUBEMAIL_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD}}"
35+
fi
36+
: "${ROUNDCUBEMAIL_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-roundcubemail}}"
37+
: "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}://${ROUNDCUBEMAIL_DB_USER}:${ROUNDCUBEMAIL_DB_PASSWORD}@${ROUNDCUBEMAIL_DB_HOST}/${ROUNDCUBEMAIL_DB_NAME}}"
38+
39+
/wait-for-it.sh ${ROUNDCUBEMAIL_DB_HOST}:3306 -t 30
40+
else
41+
# use local SQLite DB in /var/www/html/db
42+
: "${ROUNDCUBEMAIL_DB_TYPE:=sqlite}"
43+
: "${ROUNDCUBEMAIL_DB_DIR:=$PWD/db}"
44+
: "${ROUNDCUBEMAIL_DB_NAME:=sqlite}"
45+
: "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}:///$ROUNDCUBEMAIL_DB_DIR/${ROUNDCUBEMAIL_DB_NAME}.db?mode=0646}"
46+
47+
mkdir -p $ROUNDCUBEMAIL_DB_DIR
48+
chown www-data:www-data $ROUNDCUBEMAIL_DB_DIR
49+
fi
50+
51+
: "${ROUNDCUBEMAIL_DEFAULT_HOST:=localhost}"
52+
: "${ROUNDCUBEMAIL_DEFAULT_PORT:=143}"
53+
: "${ROUNDCUBEMAIL_SMTP_SERVER:=localhost}"
54+
: "${ROUNDCUBEMAIL_SMTP_PORT:=587}"
55+
: "${ROUNDCUBEMAIL_PLUGINS:=archive,zipdownload}"
56+
: "${ROUNDCUBEMAIL_TEMP_DIR:=/var/www/html/temp}"
57+
58+
if [ ! -e config/config.inc.php ]; then
59+
ROUNDCUBEMAIL_PLUGINS_PHP=`echo "${ROUNDCUBEMAIL_PLUGINS}" | sed -E "s/[, ]+/', '/g"`
60+
mkdir -p ${ROUNDCUBEMAIL_TEMP_DIR} && chown www-data ${ROUNDCUBEMAIL_TEMP_DIR}
61+
touch config/config.inc.php
62+
63+
echo "Write config to $PWD/config/config.inc.php"
64+
echo "<?php
65+
\$config['db_dsnw'] = '${ROUNDCUBEMAIL_DSNW}';
66+
\$config['db_dsnr'] = '${ROUNDCUBEMAIL_DSNR}';
67+
\$config['default_host'] = '${ROUNDCUBEMAIL_DEFAULT_HOST}';
68+
\$config['default_port'] = '${ROUNDCUBEMAIL_DEFAULT_PORT}';
69+
\$config['smtp_server'] = '${ROUNDCUBEMAIL_SMTP_SERVER}';
70+
\$config['smtp_port'] = '${ROUNDCUBEMAIL_SMTP_PORT}';
71+
\$config['temp_dir'] = '${ROUNDCUBEMAIL_TEMP_DIR}';
72+
\$config['plugins'] = ['${ROUNDCUBEMAIL_PLUGINS_PHP}'];
73+
\$config['zipdownload_selection'] = true;
74+
\$config['log_driver'] = 'stdout';
75+
" > config/config.inc.php
76+
77+
for fn in `ls /var/roundcube/config/*.php`; do
78+
echo "include('$fn');" >> config/config.inc.php
79+
done
80+
81+
# initialize DB if not SQLite
82+
echo "${ROUNDCUBEMAIL_DSNW}" | grep -q 'sqlite:' || bin/initdb.sh --dir=$PWD/SQL || bin/updatedb.sh --dir=$PWD/SQL --package=roundcube || echo "Failed to initialize databse. Please run $PWD/bin/initdb.sh manually."
83+
else
84+
echo "WARNING: $PWD/config/config.inc.php already exists."
85+
echo "ROUNDCUBEMAIL_* environment variables have been ignored."
86+
fi
87+
88+
if [ ! -z "${ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE}" ]; then
89+
sed -i -E "s/(upload_max_filesize|post_max_size) +[0-9BKMG]+/\1 ${ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE}/g" $PWD/.htaccess
90+
fi
91+
fi
92+
93+
exec "$@"

0 commit comments

Comments
 (0)