PrestaShop / PrestaShop/docker
DB reinstalled even if the value of $PS_ERASE_DB and $PS_INSTALL_DB is 0
Nobody has claimed this yet.
- Dominant language
- Dockerfile
- Stars
- 281
- Forks
- 190
- PR merge metrics
- No merged PRs in 30d
Description
Hi team,
I am facing an issue, where the DB dropped even if the value of the $PS_ERASE_DB and $PS_INSTALL_DB is 0.
Here
`#!/bin/sh
if [ "$DB_SERVER" = "" -a $PS_INSTALL_AUTO = 1 ]; then
echo >&2 'error: You requested automatic PrestaShop installation but MySQL server address is not provided '
echo >&2 ' You need to specify DB_SERVER in order to proceed'
exit 1
elif [ "$DB_SERVER" != "" -a $PS_INSTALL_AUTO = 1 ]; then
echo "\n* Checking if $DB_SERVER is available..."
mysql -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD -e "status" > /dev/null 2>&1
echo "\n* DB server $DB_SERVER is available, let's continue !"
fi
From now, stop at error
set -e
if [ ! -f ./config/settings.inc.php ] && [ ! -f ./install.lock ]; then
echo "\n* Setting up install lock file..."
touch ./install.lock
echo "\n* Reapplying PrestaShop files for enabled volumes ...";
if [ -d /tmp/data-ps ]; then
# init if empty
cp -n -R -p /tmp/data-ps/prestashop/* /var/www/html
fi
if [ -f /tmp/defines_custom.inc.php ]; then
cp -n -p /tmp/defines_custom.inc.php /var/www/html/config/defines_custom.inc.php
fi
if [ -d /tmp/pre-install-scripts/ ]; then
echo "\n* Running pre-install script(s)..."
for i in `ls /tmp/pre-install-scripts/`;do
/tmp/pre-install-scripts/$i
done
else
echo "\n* No pre-install script found, let's continue..."
fi
if [ $PS_FOLDER_INSTALL != "install" ] && [ -d /var/www/html/install ]; then
echo "\n* Renaming install folder as $PS_FOLDER_INSTALL ...";
mv /var/www/html/install /var/www/html/$PS_FOLDER_INSTALL/
fi
if [ $PS_FOLDER_ADMIN != "admin" ] && [ -d /var/www/html/admin ]; then
echo "\n* Renaming admin folder as $PS_FOLDER_ADMIN ...";
mv /var/www/html/admin /var/www/html/$PS_FOLDER_ADMIN/
fi
if [ $PS_HANDLE_DYNAMIC_DOMAIN = 1 ]; then
cp /tmp/docker_updt_ps_domains.php /var/www/html
sed -ie "s/DirectoryIndex\ index.php\ index.html/DirectoryIndex\ docker_updt_ps_domains.php\ index.php\ index.html/g" $APACHE_CONFDIR/conf-available/docker-php.conf
fi
if [ $PS_ERASE_DB = 1 ]; then
echo "\n* Drop mysql database...";
echo "\n* Dropping existing database $DB_NAME..."
mysql -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD -e "drop database if exists $DB_NAME;"
fi
if [ $PS_INSTALL_DB = 1 ]; then
echo "\n* Create mysql database...";
echo "\n* Creating database $DB_NAME..."
mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER create $DB_NAME -p$DB_PASSWD --force;
fi
if [ $PS_INSTALL_AUTO = 1 ]; then
echo "\n* Installing PrestaShop, this may take a while ...";
if [ "$PS_DOMAIN" = "<to be defined>" ]; then
export PS_DOMAIN=$(hostname -i)
fi
echo "\n* Launching the installer script..."
runuser -g www-data -u www-data -- php -d memory_limit=-1 /var/www/html/$PS_FOLDER_INSTALL/index_cli.php \
--domain="$PS_DOMAIN" --db_server=$DB_SERVER:$DB_PORT --db_name="$DB_NAME" --db_user=$DB_USER \
--db_password=$DB_PASSWD --prefix="$DB_PREFIX" --firstname="Hello" --lastname="Testing" \
--password=$ADMIN_PASSWD --email="$ADMIN_MAIL" --language=$PS_LANGUAGE --country=$PS_COUNTRY \
--all_languages=$PS_ALL_LANGUAGES --newsletter=1 --send_email=0 --ssl=$PS_ENABLE_SSL
if [ $? -ne 0 ]; then
echo 'warning: PrestaShop installation failed.'
else
echo "\n* Removing install folder..."
rm -r /var/www/html/$PS_FOLDER_INSTALL/
fi
fi
if [ -d /tmp/post-install-scripts/ ]; then
echo "\n* Running post-install script(s)..."
for i in `ls /tmp/post-install-scripts/`;do
/tmp/post-install-scripts/$i
done
else
echo "\n* No post-install script found, let's continue..."
fi
echo "\n* Setup completed, removing lock file..."
rm ./install.lock
elif [ ! -f ./config/settings.inc.php ] && [ -f ./install.lock ]; then
echo "\n* Another setup is currently running..."
sleep 10
exit 42
elif [ -f ./config/settings.inc.php ] && [ -f ./install.lock ]; then
echo "\n* Shop seems setup but remaining install lock still present..."
sleep 10
exit 42
else
echo "\n* PrestaShop Core already installed...";
fi
if [ $PS_DEMO_MODE -ne 0 ]; then
echo "\n* Enabling DEMO mode ...";
sed -ie "s/define('PS_MODE_DEMO', false);/define('PS_MODE_DEMO',\ true);/g" /var/www/html/config/defines.inc.php
fi
echo "\n* Almost ! Starting web server now\n";
if [ -d /tmp/init-scripts/ ]; then
echo "\n* Running init script(s)..."
for i in ls /tmp/init-scripts/;do
/tmp/init-scripts/$i
done
else
echo "\n* No init script found, let's continue..."
fi
echo "\n* Set the ownership..."
chown -R www-data:www-data /var/www/html/modules
exec apache2-foreground
`
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the container startup script shown in the issue and trace the install-lock branch through the PS_ERASE_DB and PS_INSTALL_DB checks. Reproduce startup with both values set to 0, then verify that neither the drop nor create database command runs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, shell
- Domain
- databases, devops
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100