- Initial release,
- Based on rx3-docker/php-apache:1.7.0-mga9 & rx3-docker/postgresql:1.2.0-mga9 images, - Use roundcubemail 1.6.18 from Mageia RPM.
This commit is contained in:
143
Dockerfile
Normal file
143
Dockerfile
Normal file
@@ -0,0 +1,143 @@
|
||||
# Rx3-Docker/RoundCubeMail Dockerfile
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
ARG IMG_FROM_URL="rx3-docker/php-apache:latest"
|
||||
|
||||
FROM ${IMG_FROM_URL}
|
||||
|
||||
ARG IMG_NAME
|
||||
ARG IMG_NAME_FULL
|
||||
ARG IMG_VERSION
|
||||
ARG IMG_MAINTAINER
|
||||
ARG IMG_URL
|
||||
|
||||
LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL}
|
||||
LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION}
|
||||
LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER}
|
||||
LABEL maintainer=${IMG_MAINTAINER}
|
||||
|
||||
ARG HTTPD_VHOST_CONFIG_DIR=/etc/httpd/conf/sites.d/default_vhost.d
|
||||
ARG RCM_HTTPD_CONFIG_FILE=${HTTPD_VHOST_CONFIG_DIR}/70-roundcubemail.conf
|
||||
ARG RCM_SHARE_DIR=/usr/share/roundcubemail
|
||||
ARG RCM_PLUGINS_DIR=${RCM_SHARE_DIR}/plugins
|
||||
ARG RCM_LIB_DIR=/var/lib/roundcubemail
|
||||
ARG RCM_ENIGMA_DIR=${RCM_LIB_DIR}/plugins/enigma
|
||||
ARG RCM_CONFIG_DIR=/etc/roundcubemail
|
||||
ARG RCM_CONFIG_FILE=${RCM_CONFIG_DIR}/config.inc.php
|
||||
ARG RCM_LOG_DIR=/var/log/roundcubemail
|
||||
ARG RCM_PLUGINS_CARDAV_URL=https://mirror.rx3.net/external/roundcubemail/carddav-v5.1.4.tar.gz
|
||||
ARG RCM_PLUGINS_LIBKOLAB_URL=https://mirror.rx3.net/external/roundcubemail/libkolab-3.6.1.tar.gz
|
||||
ARG RCM_PLUGINS_LIBCALENDARING_URL=https://mirror.rx3.net/external/roundcubemail/libcalendaring-3.6.1.tar.gz
|
||||
ARG RCM_PLUGINS_CALENDAR_URL=https://mirror.rx3.net/external/roundcubemail/calendar-3.6.0-2rx3.tar.gz
|
||||
ARG RCM_FIX_PATH=/usr/share/roundcubemail/vendor/pear/pear-core-minimal/src
|
||||
ARG RCM_PEAR_PATH=/usr/share/pear
|
||||
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
ARG ROUNDCUBEMAIL='#!/bin/bash \n\
|
||||
\n\
|
||||
if [[ ! -f '${RCM_CONFIG_FILE}' ]] \n\
|
||||
then \n\
|
||||
cp -Rf '${RCM_CONFIG_DIR}.ref/*' '${RCM_CONFIG_DIR}' \n\
|
||||
\n\
|
||||
sed -i -e "s%RCM_CONFIG_DSN%${RCM_DB_DSN}%" '${RCM_CONFIG_FILE}' \n\
|
||||
sed -i -e "s%RCM_CONFIG_SMTP%${RCM_SMTP_SERVICE}%" '${RCM_CONFIG_FILE}' \n\
|
||||
sed -i -e "s%RCM_CONFIG_IMAP%${RCM_IMAP_SERVICE}%" '${RCM_CONFIG_FILE}' \n\
|
||||
sed -i -e "s%RCM_CONFIG_NAME%${RCM_SERVER_NAME}%" '${RCM_CONFIG_FILE}' \n\
|
||||
\n\
|
||||
if [[ "${RCM_CONFIG_ENABLED}" == "TRUE" ]] \n\
|
||||
then \n\
|
||||
for dir in . plugins/libkolab plugins/calendar/drivers/caldav \n\
|
||||
do \n\
|
||||
'${RCM_SHARE_DIR}'/bin/initdb.sh --dir='${RCM_SHARE_DIR}'/${dir}/SQL \n\
|
||||
done \n\
|
||||
fi \n\
|
||||
fi \n\
|
||||
\n\
|
||||
if [[ ! -f '${RCM_ENIGMA_DIR}' ]] \n\
|
||||
then \n\
|
||||
mkdir -p '${RCM_ENIGMA_DIR}' \n\
|
||||
fi \n\
|
||||
\n\
|
||||
chown -R apache:apache '${RCM_LIB_DIR}' '${RCM_CONFIG_DIR}' '${RCM_LOG_DIR}' \n\
|
||||
chmod -R a-x,a+X '${RCM_LIB_DIR}' '${RCM_CONFIG_DIR}' '${RCM_LOG_DIR}' \n\
|
||||
chmod o-rwx '${RCM_LIB_DIR}' '${RCM_CONFIG_DIR}' '${RCM_LOG_DIR}' \n\
|
||||
\n\
|
||||
cp -f '${RCM_HTTPD_CONFIG_FILE}.ref' '${RCM_HTTPD_CONFIG_FILE}' \n\
|
||||
\n\
|
||||
sed -i -e "s%RCM_URL%${RCM_URL}%g" '${RCM_HTTPD_CONFIG_FILE}' \n\
|
||||
\n\
|
||||
sed -i -e "s/\$config\[`enable_installer`\] = .*;/RCM_CONFIG_INSTALL/" '${RCM_CONFIG_FILE}' \n\
|
||||
\n\
|
||||
if [[ "${RCM_CONFIG_ENABLED}" == "TRUE" ]] \n\
|
||||
then \n\
|
||||
sed -i -e "s/RCM_CONFIG_AUTH/all granted/" '${RCM_HTTPD_CONFIG_FILE}' \n\
|
||||
sed -i -e "s/RCM_CONFIG_INSTALL/\$config[`enable_installer`] = true;/" '${RCM_CONFIG_FILE}' \n\
|
||||
else \n\
|
||||
sed -i -e "s/RCM_CONFIG_AUTH/local/" '${RCM_HTTPD_CONFIG_FILE}' \n\
|
||||
sed -i -e "s/RCM_CONFIG_INSTALL/\$config[`enable_installer`] = false;/" '${RCM_CONFIG_FILE}' \n\
|
||||
fi \n\
|
||||
\n\
|
||||
echo -n "\$prefs[`default`] = [ `accountname` => `${RCM_CARDDAV_NAME}`, `username` => `%u`, " >> '${RCM_CONFIG_DIR}'/carddav.inc.php \n\
|
||||
echo "`password` => `%p`, `discovery_url` => `${RCM_CARDDAV_URL}`, ];" >> '${RCM_CONFIG_DIR}'/carddav.inc.php \n\
|
||||
\n\
|
||||
sed -i -e "s%RCM_CALDAV_HOST%${RCM_CALDAV_URL}%" '${RCM_CONFIG_DIR}'/calendar.inc.php \n\
|
||||
\n\
|
||||
if [[ "${RCM_CALDAV_SHARED}" != "" ]] \n\
|
||||
then \n\
|
||||
shared_config="\$config[`calendar_caldav_preinstalled_sources`] = [ " \n\
|
||||
\n\
|
||||
for share in ${RCM_CALDAV_SHARED} \n\
|
||||
do \n\
|
||||
shared_config+="`${share/:*/}` => [ `caldav_user` => `%u`, `caldav_pass` => `%p`, " \n\
|
||||
shared_config+="`caldav_url` => `${RCM_CALDAV_URL}${share/*:/}`, `showAlarms` => 0, ]," \n\
|
||||
done \n\
|
||||
\n\
|
||||
shared_config+=" ];" \n\
|
||||
\n\
|
||||
sed -i -e "s*// RCM_CALDAV_SHARED*${shared_config}*" '${RCM_CONFIG_DIR}'/calendar.inc.php \n\
|
||||
fi \n\
|
||||
\n\
|
||||
sed -i -e "s%mailhub=mail%mailhub=${SMTP_SERVER}%" /etc/ssmtp/ssmtp.conf'
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
RUN . /etc/profile.d/rx3.sh && isl --add ${IMG_URL} \
|
||||
&& urpmi.update -a \
|
||||
&& urpmi --force wget ssmtp roundcubemail php-zip php-imagick php-xmlreader php-xmlwriter gnupg2 unzip composer \
|
||||
&& wget -q -O- "${RCM_PLUGINS_CARDAV_URL}" | tar xzf - -C "${RCM_PLUGINS_DIR}" \
|
||||
&& wget -q -O- "${RCM_PLUGINS_LIBKOLAB_URL}" | tar xzf - -C "${RCM_PLUGINS_DIR}" \
|
||||
&& wget -q -O- "${RCM_PLUGINS_LIBCALENDARING_URL}" | tar xzf - -C "${RCM_PLUGINS_DIR}" \
|
||||
&& wget -q -O- "${RCM_PLUGINS_CALENDAR_URL}" | tar xzf - -C "${RCM_PLUGINS_DIR}" \
|
||||
&& cp "${RCM_PLUGINS_DIR}/carddav/config.inc.php.dist" "${RCM_CONFIG_DIR}/carddav.inc.php" \
|
||||
&& ln -s "${RCM_CONFIG_DIR}/carddav.inc.php" "${RCM_PLUGINS_DIR}/carddav/config.inc.php" \
|
||||
&& cp "${RCM_PLUGINS_DIR}/calendar/config.inc.php.dist" "${RCM_CONFIG_DIR}/calendar.inc.php" \
|
||||
&& mkdir -p "${RCM_ENIGMA_DIR}" \
|
||||
&& mkdir -p "${RCM_FIX_PATH}"/PEAR \
|
||||
&& mkdir -p "${RCM_FIX_PATH}"/OS \
|
||||
&& ln -sf "${RCM_PEAR_PATH}"/PEAR.php "${RCM_FIX_PATH}"/PEAR.php \
|
||||
&& ln -sf "${RCM_PEAR_PATH}"/PEAR/ErrorStack.php "${RCM_FIX_PATH}"/PEAR/ErrorStack.php \
|
||||
&& ln -sf "${RCM_PEAR_PATH}"/System.php "${RCM_FIX_PATH}"/System.php \
|
||||
&& ln -sf "${RCM_PEAR_PATH}"/OS/Guess.php "${RCM_FIX_PATH}"/OS/Guess.php \
|
||||
&& composer require pear/http_request2 -d "${RCM_SHARE_DIR}" \
|
||||
&& mv /etc/httpd/conf/sites.d/roundcubemail.conf "${RCM_HTTPD_CONFIG_FILE}.ref" \
|
||||
&& sed -i -e "s%Alias /roundcubemail%Alias RCM_URL%" -e "s/Require local/Require RCM_CONFIG_AUTH/" "${RCM_HTTPD_CONFIG_FILE}.ref" \
|
||||
&& sed -i -e "s/^\$config\['db_dsnw'\].*/\$config['db_dsnw'] = 'RCM_CONFIG_DSN';/" "${RCM_CONFIG_FILE}" \
|
||||
&& sed -i -e "s/^\$config\['smtp_host'\].*/\$config['smtp_host'] = 'RCM_CONFIG_SMTP';/" "${RCM_CONFIG_FILE}" \
|
||||
&& sed -i -e "s/^\$config\['imap_host'\].*/\$config['imap_host'] = 'RCM_CONFIG_IMAP';/" "${RCM_CONFIG_FILE}" \
|
||||
&& sed -i -e "s/^\$config\['product_name'\].*/\$config['product_name'] = 'RCM_CONFIG_NAME';/" "${RCM_CONFIG_FILE}" \
|
||||
&& sed -i -e "s%^\$config\['enigma_pgp_homedir'\].*%\$config['enigma_pgp_homedir'] = '${RCM_ENIGMA_DIR}';%" "${RCM_CONFIG_DIR}/enigma.inc.php" \
|
||||
&& sed -i -e "/^ 'archive',/a\ 'http_authentication',\n 'libcalendaring',\n 'password'," "${RCM_CONFIG_FILE}" \
|
||||
&& sed -i -e "/^ 'archive',/a\ 'calendar',\n 'carddav',\n 'emoticons',\n 'enigma'," "${RCM_CONFIG_FILE}" \
|
||||
&& echo -e "\n\$config['htmleditor'] = 4;" >> "${RCM_CONFIG_FILE}" \
|
||||
&& echo -e "\n\$config['enable_installer'] = false;" >> "${RCM_CONFIG_FILE}" \
|
||||
&& sed -i -e "s%https://www.domain.com/rounddav/public/%RCM_CALDAV_HOST%" "${RCM_CONFIG_DIR}/calendar.inc.php" \
|
||||
&& sed -i -e "s%\$config\['calendar_caldav_url'\]%// \$config['calendar_caldav_url']%" "${RCM_CONFIG_DIR}/calendar.inc.php" \
|
||||
&& sed -i -e "s%// default calendar view%// RCM_CALDAV_SHARED\n\n// default calendar view%" "${RCM_CONFIG_DIR}/calendar.inc.php" \
|
||||
&& sed -i -e "s/\$config\['calendar_first_day'\] = 0;/\$config['calendar_first_day'] = 1;/" "${RCM_CONFIG_DIR}/calendar.inc.php" \
|
||||
&& mv "${RCM_CONFIG_DIR}" "${RCM_CONFIG_DIR}.ref" \
|
||||
&& echo -e "${ROUNDCUBEMAIL}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/roundcubemail \
|
||||
&& chmod a+x /etc/init.d/roundcubemail \
|
||||
&& ln -s /etc/init.d/roundcubemail /etc/rcD.d/S40roundcubemail
|
||||
Reference in New Issue
Block a user