Add mail support by adding msmtp for sending
This commit is contained in:
parent
cc995b2479
commit
cacfd8c7fd
5 changed files with 97 additions and 51 deletions
25
Dockerfile
25
Dockerfile
|
@ -67,27 +67,33 @@ RUN chmod -x /wait-for.sh && \
|
|||
curl \
|
||||
python3 \
|
||||
py-pygments \
|
||||
imagemagick \
|
||||
ghostscript \
|
||||
msmtp \
|
||||
composer \
|
||||
php7 \
|
||||
php7-intl \
|
||||
php7-fpm \
|
||||
php7-cli \
|
||||
php7-intl \
|
||||
php7-curl \
|
||||
php7-fileinfo \
|
||||
php7-mbstring \
|
||||
php7-gd \
|
||||
php7-json \
|
||||
php7-dom \
|
||||
php7-pcntl \
|
||||
php7-posix \
|
||||
php7-pgsql \
|
||||
php7-exif \
|
||||
php7-mcrypt \
|
||||
php7-session \
|
||||
php7-gd \
|
||||
php7-exif \
|
||||
php7-phar \
|
||||
php7-pdo \
|
||||
php7-pgsql \
|
||||
php7-pdo_pgsql \
|
||||
php7-ctype \
|
||||
php7-pdo_mysql \
|
||||
php7-mysqli \
|
||||
php7-fileinfo \
|
||||
php7-mbstring \
|
||||
php7-ctype \
|
||||
php7-ldap \
|
||||
php7-pecl-memcached \
|
||||
memcached \
|
||||
ca-certificates && \
|
||||
|
@ -100,6 +106,7 @@ RUN chmod -x /wait-for.sh && \
|
|||
sed -i "s|;*upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|i" /etc/php7/php.ini && \
|
||||
sed -i "s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i" /etc/php7/php.ini && \
|
||||
sed -i "s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i" /etc/php7/php.ini && \
|
||||
sed -i 's+.*sendmail_path =.*+sendmail_path = "/usr/bin/msmtp -C /var/www/msmtprc --logfile /var/www/msmtp.log -a filebinmail -t"+' /etc/php7/php.ini && \
|
||||
# clean up and permissions
|
||||
rm -rf /var/cache/apk/* && \
|
||||
ln -s /usr/bin/python3 /usr/bin/python && \
|
||||
|
@ -113,8 +120,10 @@ EXPOSE 80
|
|||
# add templates for replace env variables in the application
|
||||
ADD src/config/database.php.tpl /var/www/application/config/database.php.tpl
|
||||
ADD src/config/config-local.php.tpl /var/www/application/config/config-local.php.tpl
|
||||
ADD src/configure.php /configure.php
|
||||
ADD src/config/email.php.tpl /var/www/application/config/email.php.tpl
|
||||
ADD src/crontab /etc/periodic/15min/crontab
|
||||
ADD src/configure.php /configure.php
|
||||
ADD src/configure-mail.sh /var/www/configure-mail.sh
|
||||
|
||||
# add overlay
|
||||
ADD src/s6/ /etc/s6/
|
||||
|
|
|
@ -40,14 +40,4 @@ $config['tarball_max_size'] = intval(%%%TARBALL_MAX_SIZE%%%);
|
|||
$config['tarball_cache_time'] = intval(%%%TARBALL_CACHE_TIME%%%);
|
||||
|
||||
// The maximum number of active invitation keys per account.
|
||||
$config['max_invitation_keys'] = intval(%%%MAX_INVITATION_KEYS%%%);
|
||||
|
||||
// SMTP mail settings if enabled
|
||||
if (getenv('SMTP_ENABLED') === 'true') {
|
||||
$config['protocol'] = %%%SMTP_PROTOCOL%%%;
|
||||
$config['smtp_host'] = %%%SMTP_HOST%%%;
|
||||
$config['smtp_port'] = intval(%%%SMTP_PORT%%%);
|
||||
$config['smtp_crypto'] = %%%SMTP_CRYPTO%%%;
|
||||
$config['smtp_user'] = %%%SMTP_USER%%%;
|
||||
$config['smtp_pass'] = %%%SMTP_PASS%%%;
|
||||
}
|
||||
$config['max_invitation_keys'] = intval(%%%MAX_INVITATION_KEYS%%%);
|
13
src/config/email.php.tpl
Normal file
13
src/config/email.php.tpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
// SMTP mail settings if enabled
|
||||
if (getenv('SMTP_ENABLED') === 'true') {
|
||||
$config = [
|
||||
'protocol' => %%%SMTP_PROTOCOL%%%,
|
||||
'smtp_host' => %%%SMTP_HOST%%%,
|
||||
'smtp_port' => intval(%%%SMTP_PORT%%%),
|
||||
'smtp_crypto' => %%%SMTP_CRYPTO%%%,
|
||||
'smtp_user' => %%%SMTP_USER%%%,
|
||||
'smtp_pass' => %%%SMTP_PASS%%%,
|
||||
];
|
||||
}
|
20
src/configure-mail.sh
Executable file
20
src/configure-mail.sh
Executable file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
function set_mail_config() {
|
||||
|
||||
cat <<EOF > /var/www/msmtprc
|
||||
account filebinmail
|
||||
tls on
|
||||
tls_certcheck off
|
||||
auth on
|
||||
host ${SMTP_HOST}
|
||||
port ${SMTP_PORT}
|
||||
user ${SMTP_USER}
|
||||
from ${EMAIL_FROM}
|
||||
password ${SMTP_PASS}
|
||||
EOF
|
||||
|
||||
chmod 600 /var/www/msmtprc
|
||||
}
|
||||
|
||||
set_mail_config;
|
|
@ -2,33 +2,9 @@
|
|||
<?php
|
||||
|
||||
if (getenv('RECONFIGURE') === "true") {
|
||||
echo "Reconfiguring container..." . PHP_EOL;
|
||||
|
||||
$confPath = '/var/www/application/config/config-local.php.tpl';
|
||||
$confTargetPath = '/var/www/application/config/config-local.php';
|
||||
$confVars = [
|
||||
'BASE_URL',
|
||||
'ENCRYPTION_KEY',
|
||||
'CACHE_BACKEND',
|
||||
'INDEX_PAGE',
|
||||
'EMAIL_FROM',
|
||||
'UPLOAD_MAX_SIZE',
|
||||
'UPLOAD_MAX_TEXT_SIZE',
|
||||
'UPLOAD_MAX_AGE',
|
||||
'ACTIONS_MAX_AGE',
|
||||
'SMALL_UPLOAD_SIZE',
|
||||
'TARBALL_MAX_SIZE',
|
||||
'TARBALL_CACHE_TIME',
|
||||
'MAX_INVITATION_KEYS',
|
||||
'SMTP_PROTOCOL',
|
||||
'SMTP_HOST',
|
||||
'SMTP_PORT',
|
||||
'SMTP_CRYPTO',
|
||||
'SMTP_USER',
|
||||
'SMTP_PASS'
|
||||
];
|
||||
contentsReplace($confVars, $confPath, $confTargetPath);
|
||||
echo "Reconfiguring database and local settings..." . PHP_EOL;
|
||||
|
||||
// configure database
|
||||
$dbPath = '/var/www/application/config/database.php.tpl';
|
||||
$dbTargetPath = '/var/www/application/config/database.php';
|
||||
$dbVars = [
|
||||
|
@ -51,21 +27,61 @@ if (getenv('RECONFIGURE') === "true") {
|
|||
'DB_SAVE_QUERIES'
|
||||
];
|
||||
contentsReplace($dbVars, $dbPath, $dbTargetPath);
|
||||
|
||||
// configure local settings
|
||||
$confPath = '/var/www/application/config/config-local.php.tpl';
|
||||
$confTargetPath = '/var/www/application/config/config-local.php';
|
||||
$confVars = [
|
||||
'BASE_URL',
|
||||
'ENCRYPTION_KEY',
|
||||
'CACHE_BACKEND',
|
||||
'INDEX_PAGE',
|
||||
'EMAIL_FROM',
|
||||
'UPLOAD_MAX_SIZE',
|
||||
'UPLOAD_MAX_TEXT_SIZE',
|
||||
'UPLOAD_MAX_AGE',
|
||||
'ACTIONS_MAX_AGE',
|
||||
'SMALL_UPLOAD_SIZE',
|
||||
'TARBALL_MAX_SIZE',
|
||||
'TARBALL_CACHE_TIME',
|
||||
'MAX_INVITATION_KEYS'
|
||||
];
|
||||
contentsReplace($confVars, $confPath, $confTargetPath);
|
||||
|
||||
// configure mail if enabled
|
||||
$mailPath = '/var/www/application/config/email.php.tpl';
|
||||
$mailTargetPath = '/var/www/application/config/email.php';
|
||||
$mailVars = [
|
||||
'SMTP_PROTOCOL',
|
||||
'SMTP_HOST',
|
||||
'SMTP_PORT',
|
||||
'SMTP_CRYPTO',
|
||||
'SMTP_USER',
|
||||
'SMTP_PASS'
|
||||
];
|
||||
contentsReplace($mailVars, $mailPath, $mailTargetPath);
|
||||
|
||||
if (getenv('SMTP_ENABLED') === 'true') {
|
||||
echo "Applying mail configuration..." . PHP_EOL;
|
||||
exec('sh /var/www/configure-mail.sh');
|
||||
} else {
|
||||
echo "Will not apply mail configuration..." . PHP_EOL;
|
||||
}
|
||||
} else {
|
||||
echo "Will not reconfigure container..." . PHP_EOL;
|
||||
echo "Will not reconfigure database and local settings..." . PHP_EOL;
|
||||
}
|
||||
|
||||
if (getenv('MIGRATE') === "true") {
|
||||
echo "Migrating..." . PHP_EOL;
|
||||
echo "Migrating database and dependencies..." . PHP_EOL;
|
||||
|
||||
exec("php /var/www/index.php tools update_database");
|
||||
exec("composer --working-dir=/var/www install --no-dev --no-plugins --no-scripts");
|
||||
exec("chown -R nobody:nginx /var/www");
|
||||
} else {
|
||||
echo "Will not migrate..." . PHP_EOL;
|
||||
echo "Will not migrate database and dependencies..." . PHP_EOL;
|
||||
}
|
||||
|
||||
function contentsReplace($envNames = array(), $filePath, $targetFilePath)
|
||||
function contentsReplace($envNames, $filePath, $targetFilePath)
|
||||
{
|
||||
$fileContent = file_get_contents($filePath);
|
||||
|
||||
|
@ -73,11 +89,9 @@ function contentsReplace($envNames = array(), $filePath, $targetFilePath)
|
|||
$fileContent = preg_replace("/%%%" . strtoupper($env) . "%%%/", env($env), $fileContent);
|
||||
}
|
||||
|
||||
|
||||
file_put_contents($targetFilePath, $fileContent);
|
||||
}
|
||||
|
||||
|
||||
function env($name, $default = null)
|
||||
{
|
||||
$v = getenv($name) ?: $default;
|
||||
|
|
Loading…
Reference in a new issue