mirror of
https://github.com/Mailu/Mailu.git
synced 2025-02-13 13:28:30 +02:00
Merge #1268
1268: Roundcube db r=Nebukadneza a=micw ## What type of PR? feature ## What does this PR do? - makes roundcube work with mysql - runs db init/upgrade scripts on startup - redirects roundcube logs to stdout ### Related issue(s) - preparations to solve #1226 - closes #1157 (side effect ;-) ) ## Prerequistes - [x] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/guide.html#changelog) entry file. Co-authored-by: Michael Wyraz <michael@wyraz.de> Co-authored-by: micw <michael@wyraz.de>
This commit is contained in:
commit
e41b072938
1
towncrier/newsfragments/1268.feature
Normal file
1
towncrier/newsfragments/1268.feature
Normal file
@ -0,0 +1 @@
|
||||
The roundcube container does support mysql now (no setup integration yet)
|
@ -19,9 +19,9 @@ RUN pip3 install socrate
|
||||
ENV ROUNDCUBE_URL https://github.com/roundcube/roundcubemail/releases/download/1.4.3/roundcubemail-1.4.3-complete.tar.gz
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
zlib1g-dev libzip4 libzip-dev \
|
||||
zlib1g-dev libzip4 libzip-dev libpq-dev \
|
||||
python3-jinja2 \
|
||||
&& docker-php-ext-install zip \
|
||||
&& docker-php-ext-install zip pdo_mysql pdo_pgsql \
|
||||
&& echo date.timezone=UTC > /usr/local/etc/php/conf.d/timezone.ini \
|
||||
&& rm -rf /var/www/html/ \
|
||||
&& cd /var/www \
|
||||
|
@ -3,7 +3,7 @@
|
||||
$config = array();
|
||||
|
||||
// Generals
|
||||
$config['db_dsnw'] = 'sqlite:////data/roundcube.db';
|
||||
$config['db_dsnw'] = getenv('DB_DSNW');;
|
||||
$config['temp_dir'] = '/tmp/';
|
||||
$config['des_key'] = getenv('SECRET_KEY');
|
||||
$config['cipher_method'] = 'AES-256-CBC';
|
||||
|
@ -4,16 +4,61 @@ import os
|
||||
import logging as log
|
||||
import sys
|
||||
from socrate import conf
|
||||
import subprocess
|
||||
|
||||
log.basicConfig(stream=sys.stderr, level=os.environ.get("LOG_LEVEL", "WARNING"))
|
||||
|
||||
os.environ["MAX_FILESIZE"] = str(int(int(os.environ.get("MESSAGE_SIZE_LIMIT"))*0.66/1048576))
|
||||
|
||||
db_flavor=os.environ.get("ROUNDCUBE_DB_FLAVOR",os.environ.get("DB_FLAVOR","sqlite"))
|
||||
if db_flavor=="sqlite":
|
||||
os.environ["DB_DSNW"]="sqlite:////data/roundcube.db"
|
||||
elif db_flavor=="mysql":
|
||||
os.environ["DB_DSNW"]="mysql://%s:%s@%s/%s" % (
|
||||
os.environ.get("ROUNDCUBE_DB_USER","roundcube"),
|
||||
os.environ.get("ROUNDCUBE_DB_PW"),
|
||||
os.environ.get("ROUNDCUBE_DB_HOST",os.environ.get("DB_HOST","database")),
|
||||
os.environ.get("ROUNDCUBE_DB_NAME","roundcube")
|
||||
)
|
||||
elif db_flavor=="postgresql":
|
||||
os.environ["DB_DSNW"]="pgsql://%s:%s@%s/%s" % (
|
||||
os.environ.get("ROUNDCUBE_DB_USER","roundcube"),
|
||||
os.environ.get("ROUNDCUBE_DB_PW"),
|
||||
os.environ.get("ROUNDCUBE_DB_HOST",os.environ.get("DB_HOST","database")),
|
||||
os.environ.get("ROUNDCUBE_DB_NAME","roundcube")
|
||||
)
|
||||
else:
|
||||
print("Unknown ROUNDCUBE_DB_FLAVOR: %s",db_flavor)
|
||||
exit(1)
|
||||
|
||||
|
||||
|
||||
conf.jinja("/php.ini", os.environ, "/usr/local/etc/php/conf.d/roundcube.ini")
|
||||
|
||||
# Fix some permissions
|
||||
os.system("mkdir -p /data/gpg")
|
||||
os.system("chown -R www-data:www-data /data")
|
||||
os.system("mkdir -p /data/gpg /var/www/html/logs")
|
||||
os.system("touch /var/www/html/logs/errors")
|
||||
os.system("chown -R www-data:www-data /data /var/www/html/logs")
|
||||
|
||||
try:
|
||||
print("Initializing database")
|
||||
result=subprocess.check_output(["/var/www/html/bin/initdb.sh","--dir","/var/www/html/SQL"],stderr=subprocess.STDOUT)
|
||||
print(result.decode())
|
||||
except subprocess.CalledProcessError as e:
|
||||
if "already exists" in e.stdout.decode():
|
||||
print("Already initialzed")
|
||||
else:
|
||||
print(e.stdout.decode())
|
||||
quit(1)
|
||||
|
||||
try:
|
||||
print("Upgrading database")
|
||||
subprocess.check_call(["/var/www/html/bin/update.sh","--version=?","-y"],stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError as e:
|
||||
quit(1)
|
||||
|
||||
# Tail roundcube logs
|
||||
subprocess.Popen(["tail","-f","-n","0","/var/www/html/logs/errors"])
|
||||
|
||||
# Run apache
|
||||
os.execv("/usr/local/bin/apache2-foreground", ["apache2-foreground"])
|
||||
|
Loading…
x
Reference in New Issue
Block a user