Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move towards Docker best practices #26

Merged
merged 9 commits into from
Jun 22, 2016
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
shared/
launcher-local
launcher-local
launcher.env
launcher-test
25 changes: 18 additions & 7 deletions containers/web/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ RUN apt-get update && apt-get install -y \
anacron

# Enable apache mods and PHP extensions
RUN a2enmod php5 && a2enmod rewrite && php5enmod mcrypt
RUN a2enmod php5 && a2enmod rewrite && a2enmod env && php5enmod mcrypt

# Update the PHP.ini file
RUN sed -i "s/error_reporting = .*$/error_reporting = E_ERROR | E_WARNING | E_PARSE/" /etc/php5/apache2/php.ini
Expand All @@ -39,23 +39,31 @@ RUN awk '/PATH=/ { print; print "MAILTO=\"\""; next}1' /etc/crontab > /tmp/cront
RUN awk '/LOGNAME=root/ { print; print "MAILTO=\"\""; next}1' /etc/anacrontab > /tmp/anacrontab && mv /tmp/anacrontab /etc/anacrontab

# Setup persistent environment variables
ENV XIBO_VERSION=1.8.0-alpha3 XMR_HOST=xibo-cms-xmr
ENV XIBO_SMTP_SERVER=smtp.gmail.com:587 XIBO_SMTP_USERNAME=none XIBO_SMTP_PASSWORD=none XIBO_SMTP_USE_TLS=YES XIBO_SMTP_USE_STARTTLS=YES XIBO_SMTP_REWRITE_DOMAIN=gmail.com XIBO_SMTP_HOSTNAME=none XIBO_SMTP_FROM_LINE_OVERRIDE=YES
ENV CMS_VERSION=1.8.0-alpha3 XMR_HOST=xmr CMS_DB_VERSION=123
ENV CMS_DATABASE_HOST=mysql CMS_DATABASE_USERNAME=cms CMS_DATABASE_PASSWORD=none CMS_DATABASE_PORT=3306 CMS_DATABASE_NAME=cms
ENV CMS_SERVER=smtp.gmail.com:587 CMS_SMTP_USERNAME=none CMS_SMTP_PASSWORD=none CMS_SMTP_USE_TLS=YES CMS_SMTP_USE_STARTTLS=YES CMS_SMTP_REWRITE_DOMAIN=gmail.com CMS_SMTP_HOSTNAME=none CMS_SMTP_FROM_LINE_OVERRIDE=YES

# Expose port 80
EXPOSE 80

# Pull in the release archive for the environment
ADD https://github.com/xibosignage/xibo-cms/releases/download/${XIBO_VERSION}/xibo-cms-${XIBO_VERSION}.tar.gz /var/www/xibo-cms.tar.gz
RUN mkdir -p /var/www/cms && curl -o cms.tar.gz -SL https://github.com/xibosignage/xibo-cms/releases/download/${CMS_VERSION}/xibo-cms-${CMS_VERSION}.tar.gz \
&& tar --strip=1 -xzf cms.tar.gz -C /var/www/cms \
&& rm cms.tar.gz && rm /var/www/cms/web/install/index.php
ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /usr/local/bin/wait-for-it.sh
ADD settings.php-template /var/www/cms/web/settings.php
ADD settings.php-template /tmp/settings.php-template
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While there is nothing specifically wrong with the current methodology, it does seem unnecessary that we're writing a file, writing an identical temporary file, updating that file, and then writing over the original file. I might suggest doing what Laravel does... Set the secret key in the launcher config to a default value and then have the launcher generate a key if that value has not be changed on first run. It can then be passed by environment variable and you never have to worry about keeping the file updated.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One copy of the settings file is copied in for CI mode. I can't avoid doing that.

I could pass the SECRET_KEY in as a variable. The reason I'm not is that what it's set to doesn't really matter, only that it's relatively stable (ie doesn't change on every request) and that it's random. Passing it in is asking for users to set dumb defaults which reduces the quality of the nonces it's used to generate.

ADD ssmtp.conf /etc/ssmtp/ssmtp.conf

# Map a volumes to this folder.
# Our CMS files, library, cache and backups will be in here.
RUN mkdir -p /var/www/xibo && mkdir -p /var/www/backup
VOLUME /var/www/xibo
RUN mkdir -p /var/www/cms/library/temp && mkdir -p /var/www/backup && mkdir -p /var/www/cms/cache && mkdir -p /var/www/cms/web/userscripts && chown -R www-data:www-data /var/www/cms

VOLUME /var/www/cms/library
VOLUME /var/www/cms/custom
VOLUME /var/www/cms/web/theme/custom
VOLUME /var/www/backup
VOLUME /var/www/cms/web/userscripts

# Update the default apache site with the config we created.
COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf
Expand All @@ -66,7 +74,10 @@ COPY httpd-foreground /usr/local/bin/httpd-foreground
RUN chmod +x /entrypoint.sh /usr/local/bin/httpd-foreground /usr/local/bin/wait-for-it.sh

# Create a flag file which the bootstrapping process will delete
# This tells us if we're doing a new install/upgrade on run
# This tells us if it's the first run of a new container
RUN touch /CMS-FLAG

# Add a group for SSMTP
RUN /usr/sbin/groupadd ssmtp

CMD ["/entrypoint.sh"]
10 changes: 8 additions & 2 deletions containers/web/apache-config.conf
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
<VirtualHost *:80>
ServerAdmin me@mydomain.com
DocumentRoot /var/www/xibo/web/
DocumentRoot /var/www/cms/web/

<Directory /var/www/xibo/web/>
PassEnv CMS_DATABASE_NAME
PassEnv CMS_DATABASE_HOST
PassEnv CMS_DATABASE_USERNAME
PassEnv CMS_DATABASE_PORT
PassEnv CMS_DATABASE_PASSWORD

<Directory /var/www/cms/web/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Expand Down
259 changes: 116 additions & 143 deletions containers/web/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,164 +18,134 @@ then
exit $?
fi

# Detect if we're going to run an upgrade
if [ -e "/CMS-FLAG" ]
# Sleep for a few seconds to give MySQL time to initialise
echo "Waiting for MySQL to start - max 300 seconds"
/usr/local/bin/wait-for-it.sh -q -t 300 $CMS_DATABASE_HOST:$CMS_DATABASE_PORT

if [ ! "$?" == 0 ]
then
if [ -e "/var/www/xibo/web/settings.php" ]
then
# Run a database backup
dbuser=$(awk -F "'" '/\$dbuser/ {print $2}' /var/www/xibo/web/settings.php)
dbpass=$(awk -F "'" '/\$dbpass/ {print $2}' /var/www/xibo/web/settings.php)
dbname=$(awk -F "'" '/\$dbpass/ {print $2}' /var/www/xibo/web/settings.php)

mysqldump -h mysql -u $dbuser -p$dbpass $dbname | gzip > /var/www/backup/$(date +"%Y-%m-%d_%H-%M-%S").sql.gz

# Make a temporary place to store the user's CMS data
mkdir -p /var/www/backup/upgrade/theme

cp -rp /var/www/xibo/custom /var/www/backup/upgrade
find /var/www/xibo/web/theme -maxdepth 1 -type d ! -name default ! -name compact ! -name theme -exec cp -rp {} /var/www/backup/theme \;

# Backup the settings.php file
mv /var/www/xibo/web/settings.php /var/www/backup/upgrade/settings.php

# Delete the old install EXCEPT the library directory
find /var/www/xibo -maxdepth 1 -type d ! -name library -exec rm -rf {}\;
find /var/www/xibo -maxdepth 1 -type f -exec rm -f {}\;

# Replace settings
mv /var/www/backup/upgrade/settings.php /var/www/xibo/web/settings.php

# Replace custom
mv /var/www/backup/upgrade/custom /var/www/xibo

# Replace theme
mkdir -p /var/www/xibo/web
mv /var/www/backup/upgrade/theme /var/www/xibo/web
fi

# Drop the CMS cache (if it exists)
if [ -d /var/www/xibo/cache ]
then
rm -r /var/www/xibo/cache
fi
echo "MySQL didn't start in the allocated time" > /var/www/backup/LOG
fi

# If we're not in CI mode (for Jenkins) then extract the CMS source
if [ "$XIBO_DEV_MODE" != "ci" ]
then
tar --strip=1 -zxf /var/www/xibo-cms.tar.gz -C /var/www/xibo --exclude=settings.php
fi

chown www-data.www-data -R /var/www/xibo/web
chown www-data.www-data -R /var/www/xibo/install

mkdir /var/www/xibo/cache
mkdir -p /var/www/xibo/library/temp
chown www-data.www-data -R /var/www/xibo/cache /var/www/xibo/library

if [ ! -e "/var/www/xibo/web/settings.php" ]
# Safety sleep to give MySQL a moment to settle after coming up
echo "MySQL started"
sleep 1

DB_EXISTS=0
# Check if the database exists already
if mysql -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "use $CMS_DATABASE_NAME"
then
# Database exists.
DB_EXISTS=1
fi

# Check if we need to run an upgrade
# if DB_EXISTS then see if the version installed matches
if [ "$DB_EXISTS" == "1" ]
then
# Get the currently installed schema version number
CURRENT_DB_VERSION=$(mysql -D $CMS_DATABASE_NAME -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -se 'SELECT DBVersion from version')

if [ ! "$CURRENT_DB_VERSION" == "$CMS_DB_VERSION" ]
then
# This is a fresh install so bootstrap the whole
# system
echo "New install"

# Sleep for a few seconds to give MySQL time to initialise
echo "Waiting for MySQL to start - max 300 seconds"
/usr/local/bin/wait-for-it.sh -q -t 300 mysql:3306

if [ ! "$?" == 0 ]
then
echo "MySQL didn't start in the allocated time" > /var/www/backup/LOG
fi

# Safety sleep to give MySQL a moment to settle after coming up
echo "MySQL started"
sleep 1

echo "Provisioning Database"
# Create database
MYSQL_USER_PASSWORD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)
mysql -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "CREATE DATABASE cms"
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "SOURCE /var/www/xibo/install/master/structure.sql"
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "SOURCE /var/www/xibo/install/master/data.sql"
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "SOURCE /var/www/xibo/install/master/constraints.sql"

mysql -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "GRANT ALL PRIVILEGES ON cms.* TO 'cms_user'@'%' IDENTIFIED BY '$MYSQL_USER_PASSWORD'; FLUSH PRIVILEGES;"
echo $MYSQL_USER_PASSWORD > /var/www/backup/.mysql-user-password
chmod 400 /var/www/backup/.mysql-user-password

# Write settings.php
echo "Writing settings.php"
SECRET_KEY=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)
CMS_KEY=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)
cp /tmp/settings.php-template /var/www/xibo/web/settings.php
sed -i "s/\$dbpass = .*$/\$dbpass = '$MYSQL_USER_PASSWORD';/" /var/www/xibo/web/settings.php
sed -i "s/define('SECRET_KEY','');/define('SECRET_KEY','$SECRET_KEY');/" /var/www/xibo/web/settings.php

echo "Configuring Database Settings"
# Set LIBRARY_LOCATION
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`setting\` SET \`value\`='/var/www/xibo/library/', \`userChange\`=0, \`userSee\`=0 WHERE \`setting\`='LIBRARY_LOCATION' LIMIT 1"

# Set admin username/password
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`user\` SET \`UserName\`='xibo_admin', \`UserPassword\`='5f4dcc3b5aa765d61d8327deb882cf99' WHERE \`UserID\` = 1 LIMIT 1"

# Set XMR public/private address
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`setting\` SET \`value\`='tcp://$XMR_HOST:50001', \`userChange\`=0, \`userSee\`=0 WHERE \`setting\`='XMR_ADDRESS' LIMIT 1"
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`setting\` SET \`value\`='tcp://yourserver:9505' WHERE \`setting\`='XMR_PUB_ADDRESS' LIMIT 1"

# Set CMS Key
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`setting\` SET \`value\`='$CMS_KEY' WHERE \`setting\`='SERVER_KEY' LIMIT 1"

# Configure Maintenance
echo "Setting up Maintenance"
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`setting\` SET \`value\`='Protected' WHERE \`setting\`='MAINTENANCE_ENABLED' LIMIT 1"

if [ "$XIBO_DEV_MODE" == "ci" ]
then
# Unprotect maintenance in ci mode
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`setting\` SET \`value\`='On' WHERE \`setting\`='MAINTENANCE_ENABLED' LIMIT 1"
fi

MAINTENANCE_KEY=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)
mysql -D cms -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql -e "UPDATE \`setting\` SET \`value\`='$MAINTENANCE_KEY' WHERE \`setting\`='MAINTENANCE_KEY' LIMIT 1"

mkdir -p /var/www/backup/cron
echo "*/5 * * * * root /usr/bin/wget -O /dev/null -o /dev/null http://localhost/maint/?key=$MAINTENANCE_KEY" > /var/www/backup/cron/cms-maintenance

# Configure MySQL Backup
echo "Configuring Backups"
echo "#!/bin/bash" > /var/www/backup/cron/cms-db-backup
echo "" >> /var/www/backup/cron/cms-db-backup
echo "/bin/mkdir -p /var/www/backup/db" >> /var/www/backup/cron/cms-db-backup
echo "/usr/bin/mysqldump -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h mysql cms | gzip > /var/www/backup/db/latest.sql.gz" >> /var/www/backup/cron/cms-db-backup
# We're going to run an upgrade. Make a database backup
mysqldump -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD $CMS_DATABASE_NAME | gzip > /var/www/backup/db-$(date +"%Y-%m-%d_%H-%M-%S").sql.gz

# Drop app cache on upgrade
rm -rf /var/www/cms/cache/*
fi

# Remove the flag so we don't try and bootstrap in future
fi

if [ "$DB_EXISTS" == "0" ]
then
# This is a fresh install so bootstrap the whole
# system
echo "New install"

mysql -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "CREATE DATABASE $CMS_DATABASE_NAME"

echo "Provisioning Database"
# Populate the database
mysql -D $CMS_DATABASE_NAME -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "SOURCE /var/www/cms/install/master/structure.sql"
mysql -D $CMS_DATABASE_NAME -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "SOURCE /var/www/cms/install/master/data.sql"
mysql -D $CMS_DATABASE_NAME -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "SOURCE /var/www/cms/install/master/constraints.sql"

mysql -u root -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "GRANT ALL PRIVILEGES ON cms.* TO '$CMS_DATABASE_USERNAME'@'%' IDENTIFIED BY '$CMS_DATABASE_PASSWORD'; FLUSH PRIVILEGES;"

CMS_KEY=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)

echo "Configuring Database Settings"
# Set LIBRARY_LOCATION
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`setting\` SET \`value\`='/var/www/cms/library/', \`userChange\`=0, \`userSee\`=0 WHERE \`setting\`='LIBRARY_LOCATION' LIMIT 1"

# Set admin username/password
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`user\` SET \`UserName\`='xibo_admin', \`UserPassword\`='5f4dcc3b5aa765d61d8327deb882cf99' WHERE \`UserID\` = 1 LIMIT 1"

# Set XMR public/private address
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`setting\` SET \`value\`='tcp://$XMR_HOST:50001', \`userChange\`=0, \`userSee\`=0 WHERE \`setting\`='XMR_ADDRESS' LIMIT 1"
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`setting\` SET \`value\`='tcp://yourserver:9505' WHERE \`setting\`='XMR_PUB_ADDRESS' LIMIT 1"

# Set CMS Key
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`setting\` SET \`value\`='$CMS_KEY' WHERE \`setting\`='SERVER_KEY' LIMIT 1"

# Configure Maintenance
echo "Setting up Maintenance"
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`setting\` SET \`value\`='Protected' WHERE \`setting\`='MAINTENANCE_ENABLED' LIMIT 1"

MAINTENANCE_KEY=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`setting\` SET \`value\`='$MAINTENANCE_KEY' WHERE \`setting\`='MAINTENANCE_KEY' LIMIT 1"

mkdir -p /var/www/backup/cron
echo "*/5 * * * * root /usr/bin/wget -O /dev/null -o /dev/null http://localhost/maint/?key=$MAINTENANCE_KEY" > /var/www/backup/cron/cms-maintenance

# Configure MySQL Backup
echo "Configuring Backups"
echo "#!/bin/bash" > /var/www/backup/cron/cms-db-backup
echo "" >> /var/www/backup/cron/cms-db-backup
echo "/bin/mkdir -p /var/www/backup/db" >> /var/www/backup/cron/cms-db-backup
echo "/usr/bin/mysqldump -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT $CMS_DATABASE_NAME | gzip > /var/www/backup/db/latest.sql.gz" >> /var/www/backup/cron/cms-db-backup
fi

if [ -e /CMS-FLAG ]
then
# Remove the CMS-FLAG so we don't run this block time we're started
rm /CMS-FLAG
rm /var/www/xibo/web/install/index.php

# Ensure there's a group for ssmtp
/usr/sbin/groupadd ssmtp

# Ensure there's a crontab for maintenance
cp /var/www/backup/cron/cms-maintenance /etc/cron.d/cms-maintenance

# Ensure there's a crontab for backups
# Use anacron for this so we get backups even if
# the box isn't on 24/7
cp /var/www/backup/cron/cms-db-backup /etc/cron.daily/cms-db-backup
/bin/chmod 700 /etc/cron.daily/cms-db-backup

# Write settings.php
echo "Updating settings.php"
SECRET_KEY=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)

if [ "$XIBO_DEV_MODE" == "ci" ]
then
# We won't have a settings.php in place, so we'll need to copy one in
cp /tmp/settings.php-template /var/www/cms/web/settings.php
chown www-data.www-data -R /var/www/cms

# Unprotect maintenance in CI mode
mysql -D $CMS_DATABASE_NAME -u $CMS_DATABASE_USERNAME -p$CMS_DATABASE_PASSWORD -h $CMS_DATABASE_HOST -P $CMS_DATABASE_PORT -e "UPDATE \`setting\` SET \`value\`='On' WHERE \`setting\`='MAINTENANCE_ENABLED' LIMIT 1"
fi

sed -i "s/define('SECRET_KEY','');/define('SECRET_KEY','$SECRET_KEY');/" /var/www/cms/web/settings.php
fi

# Configure SSMTP to send emails if required
/bin/sed -i "s/mailhub=.*$/mailhub=$XIBO_SMTP_SERVER/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/AuthUser=.*$/AuthUser=$XIBO_SMTP_USERNAME/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/AuthPass=.*$/AuthPass=$XIBO_SMTP_PASSWORD/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/UseTLS=.*$/UseTLS=$XIBO_SMTP_USE_TLS/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/UseSTARTTLS=.*$/UseSTARTTLS=$XIBO_SMTP_USE_STARTTLS/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/rewriteDomain=.*$/rewriteDomain=$XIBO_SMTP_REWRITE_DOMAIN/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/hostname=.*$/hostname=$XIBO_SMTP_HOSTNAME/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/FromLineOverride=.*$/FromLineOverride=$XIBO_SMTP_FROM_LINE_OVERRIDE/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/mailhub=.*$/mailhub=$CMS_SMTP_SERVER/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/AuthUser=.*$/AuthUser=$CMS_SMTP_USERNAME/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/AuthPass=.*$/AuthPass=$CMS_SMTP_PASSWORD/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/UseTLS=.*$/UseTLS=$CMS_SMTP_USE_TLS/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/UseSTARTTLS=.*$/UseSTARTTLS=$CMS_SMTP_USE_STARTTLS/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/rewriteDomain=.*$/rewriteDomain=$CMS_SMTP_REWRITE_DOMAIN/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/hostname=.*$/hostname=$CMS_SMTP_HOSTNAME/" /etc/ssmtp/ssmtp.conf
/bin/sed -i "s/FromLineOverride=.*$/FromLineOverride=$CMS_SMTP_FROM_LINE_OVERRIDE/" /etc/ssmtp/ssmtp.conf

# Secure SSMTP files
# Following recommendations here:
Expand All @@ -185,9 +155,12 @@ fi
/bin/chmod 640 /etc/ssmtp/ssmtp.conf
/bin/chmod g+s /usr/sbin/ssmtp

mkdir -p /var/www/cms/library/temp
chown www-data.www-data -R /var/www/cms

echo "Starting cron"
/usr/sbin/cron
/usr/sbin/anacron

echo "Starting webserver"
/usr/local/bin/httpd-foreground
/usr/local/bin/httpd-foreground
8 changes: 4 additions & 4 deletions containers/web/settings.php-template
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ global $dbuser;
global $dbpass;
global $dbname;

$dbhost = 'mysql';
$dbuser = 'cms_user';
$dbpass = '';
$dbname = 'cms';
$dbhost = $_SERVER['CMS_DATABASE_HOST'] . ':' . $_SERVER['CMS_DATABASE_PORT'];
$dbuser = $_SERVER['CMS_DATABASE_USERNAME'];
$dbpass = $_SERVER['CMS_DATABASE_PASSWORD'];
$dbname = $_SERVER['CMS_DATABASE_NAME'];

if (!defined('SECRET_KEY'))
define('SECRET_KEY','');
Expand Down
Loading