├── 8 ├── config_files │ ├── update-domain.php │ ├── build │ │ ├── my-minimal.cnf │ │ └── shop-build.php │ ├── docker-customization_run.sh │ └── get-module.sh └── Dockerfile ├── 9 ├── config_files │ ├── update-domain.php │ ├── build │ │ ├── my-minimal.cnf │ │ └── shop-build.php │ ├── docker-customization_run.sh │ └── get-module.sh └── Dockerfile ├── 1.5 ├── config_files │ ├── update-domain.php │ ├── build │ │ ├── my-minimal.cnf │ │ └── shop-build.php │ ├── docker-customization_run.sh │ └── get-module.sh └── Dockerfile ├── 1.6 ├── config_files │ ├── update-domain.php │ ├── build │ │ ├── my-minimal.cnf │ │ └── shop-build.php │ ├── docker-customization_run.sh │ └── get-module.sh └── Dockerfile ├── 1.7 ├── config_files │ ├── update-domain.php │ ├── build │ │ ├── my-minimal.cnf │ │ └── shop-build.php │ ├── docker-customization_run.sh │ └── get-module.sh └── Dockerfile ├── beta ├── config_files │ ├── update-domain.php │ ├── build │ │ ├── my-minimal.cnf │ │ └── shop-build.php │ ├── docker-customization_run.sh │ └── get-module.sh └── Dockerfile ├── nightly ├── config_files │ ├── update-domain.php │ ├── build │ │ ├── my-minimal.cnf │ │ └── shop-build.php │ ├── docker-customization_run.sh │ └── get-module.sh └── Dockerfile ├── LICENSE ├── .github └── workflows │ └── docker.yml └── Readme.md /1.5/config_files/update-domain.php: -------------------------------------------------------------------------------- 1 | > $GITHUB_ENV 19 | 20 | - name: Docker Build 21 | run: docker build --build-arg INSTALL_LANGUAGES=0 -t "${{ env.image }}" . 22 | working-directory: ${{ matrix.ps-versions }} 23 | 24 | - name: Docker Images 25 | run: docker images 26 | 27 | - name: Docker Test 28 | run: ~/official-images/test/run.sh "${{ env.image }}" 29 | working-directory: ${{ matrix.ps-versions }} 30 | 31 | - name: Docker Run 32 | run: docker run -d --name prestashop ${{ env.image }} && docker exec prestashop bash -c "cat /var/www/html/app/config/parameters.php || cat /var/www/html/config/settings.inc.php" 33 | working-directory: ${{ matrix.ps-versions }} 34 | 35 | -------------------------------------------------------------------------------- /1.7/config_files/docker-customization_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "\n* Starting MySQL server ..."; 4 | service mariadb start 5 | 6 | echo "\n* Updating PrestaShop domains ..."; 7 | req='UPDATE ps_configuration SET value = "'$PS_DOMAIN'" WHERE name IN ("PS_SHOP_DOMAIN", "PS_SHOP_DOMAIN_SSL"); UPDATE ps_shop_url SET domain = "'$PS_DOMAIN'", domain_ssl = "'$PS_DOMAIN'";' 8 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 9 | runuser -g www-data -u www-data php /tmp/update-domain.php & 10 | 11 | req='UPDATE ps_configuration SET value = "'$PS_ENABLE_SSL'" WHERE name IN ("PS_SSL_ENABLED", "PS_SSL_ENABLED_EVERYWHERE");' 12 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 13 | 14 | if [ "$ID_MODULE" != "0" ]; then 15 | echo "\n* Requesting module $ID_MODULE ..."; 16 | runuser -g www-data -u www-data bash /tmp/get-module.sh & 17 | fi 18 | 19 | if [ "$XDEBUG_ENABLED" == "1" ]; then 20 | echo "\n* Enabling XDEBUG ..."; 21 | docker-php-ext-enable xdebug 22 | fi 23 | 24 | unset GET_USER 25 | unset GET_FILE_MODULE 26 | 27 | echo "\n* Updating PHP ini file (Memory limit to ${PHP_MEMORY_LIMIT}M)"; 28 | sed -i -E "s/memory_limit.*/memory_limit\ =\ ${PHP_MEMORY_LIMIT}M/g" /usr/local/etc/php/php.ini 29 | sed -i -E 's/memory_limit.*/memory_limit = 1024M/g' /usr/local/etc/php/php.ini 30 | 31 | bash /tmp/docker_run.sh 32 | -------------------------------------------------------------------------------- /8/config_files/docker-customization_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "\n* Starting MySQL server ..."; 4 | service mariadb start 5 | 6 | echo "\n* Updating PrestaShop domains ..."; 7 | req='UPDATE ps_configuration SET value = "'$PS_DOMAIN'" WHERE name IN ("PS_SHOP_DOMAIN", "PS_SHOP_DOMAIN_SSL"); UPDATE ps_shop_url SET domain = "'$PS_DOMAIN'", domain_ssl = "'$PS_DOMAIN'";' 8 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 9 | runuser -g www-data -u www-data php /tmp/update-domain.php & 10 | 11 | req='UPDATE ps_configuration SET value = "'$PS_ENABLE_SSL'" WHERE name IN ("PS_SSL_ENABLED", "PS_SSL_ENABLED_EVERYWHERE");' 12 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 13 | 14 | if [ "$ID_MODULE" != "0" ]; then 15 | echo "\n* Requesting module $ID_MODULE ..."; 16 | runuser -g www-data -u www-data bash /tmp/get-module.sh & 17 | fi 18 | 19 | if [ "$XDEBUG_ENABLED" == "1" ]; then 20 | echo "\n* Enabling XDEBUG ..."; 21 | docker-php-ext-enable xdebug 22 | fi 23 | 24 | unset GET_USER 25 | unset GET_FILE_MODULE 26 | 27 | echo "\n* Updating PHP ini file (Memory limit to ${PHP_MEMORY_LIMIT}M)"; 28 | sed -i -E "s/memory_limit.*/memory_limit\ =\ ${PHP_MEMORY_LIMIT}M/g" /usr/local/etc/php/php.ini 29 | sed -i -E 's/memory_limit.*/memory_limit = 1024M/g' /usr/local/etc/php/php.ini 30 | 31 | bash /tmp/docker_run.sh 32 | -------------------------------------------------------------------------------- /9/config_files/docker-customization_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "\n* Starting MySQL server ..."; 4 | service mariadb start 5 | 6 | echo "\n* Updating PrestaShop domains ..."; 7 | req='UPDATE ps_configuration SET value = "'$PS_DOMAIN'" WHERE name IN ("PS_SHOP_DOMAIN", "PS_SHOP_DOMAIN_SSL"); UPDATE ps_shop_url SET domain = "'$PS_DOMAIN'", domain_ssl = "'$PS_DOMAIN'";' 8 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 9 | runuser -g www-data -u www-data php /tmp/update-domain.php & 10 | 11 | req='UPDATE ps_configuration SET value = "'$PS_ENABLE_SSL'" WHERE name IN ("PS_SSL_ENABLED", "PS_SSL_ENABLED_EVERYWHERE");' 12 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 13 | 14 | if [ "$ID_MODULE" != "0" ]; then 15 | echo "\n* Requesting module $ID_MODULE ..."; 16 | runuser -g www-data -u www-data bash /tmp/get-module.sh & 17 | fi 18 | 19 | if [ "$XDEBUG_ENABLED" == "1" ]; then 20 | echo "\n* Enabling XDEBUG ..."; 21 | docker-php-ext-enable xdebug 22 | fi 23 | 24 | unset GET_USER 25 | unset GET_FILE_MODULE 26 | 27 | echo "\n* Updating PHP ini file (Memory limit to ${PHP_MEMORY_LIMIT}M)"; 28 | sed -i -E "s/memory_limit.*/memory_limit\ =\ ${PHP_MEMORY_LIMIT}M/g" /usr/local/etc/php/php.ini 29 | sed -i -E 's/memory_limit.*/memory_limit = 1024M/g' /usr/local/etc/php/php.ini 30 | 31 | bash /tmp/docker_run.sh 32 | -------------------------------------------------------------------------------- /nightly/config_files/docker-customization_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "\n* Starting MySQL server ..."; 4 | service mariadb start 5 | 6 | echo "\n* Updating PrestaShop domains ..."; 7 | req='UPDATE ps_configuration SET value = "'$PS_DOMAIN'" WHERE name IN ("PS_SHOP_DOMAIN", "PS_SHOP_DOMAIN_SSL"); UPDATE ps_shop_url SET domain = "'$PS_DOMAIN'", domain_ssl = "'$PS_DOMAIN'";' 8 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 9 | runuser -g www-data -u www-data php /tmp/update-domain.php & 10 | 11 | req='UPDATE ps_configuration SET value = "'$PS_ENABLE_SSL'" WHERE name IN ("PS_SSL_ENABLED", "PS_SSL_ENABLED_EVERYWHERE");' 12 | mysql -h$DB_SERVER -P$DB_PORT -u$DB_USER -p$DB_PASSWD -D$DB_NAME -e "${req}" & 13 | 14 | if [ "$ID_MODULE" != "0" ]; then 15 | echo "\n* Requesting module $ID_MODULE ..."; 16 | runuser -g www-data -u www-data bash /tmp/get-module.sh & 17 | fi 18 | 19 | if [ "$XDEBUG_ENABLED" == "1" ]; then 20 | echo "\n* Enabling XDEBUG ..."; 21 | docker-php-ext-enable xdebug 22 | fi 23 | 24 | unset GET_USER 25 | unset GET_FILE_MODULE 26 | 27 | echo "\n* Updating PHP ini file (Memory limit to ${PHP_MEMORY_LIMIT}M)"; 28 | sed -i -E "s/memory_limit.*/memory_limit\ =\ ${PHP_MEMORY_LIMIT}M/g" /usr/local/etc/php/php.ini 29 | sed -i -E 's/memory_limit.*/memory_limit = 1024M/g' /usr/local/etc/php/php.ini 30 | 31 | bash /tmp/docker_run.sh 32 | -------------------------------------------------------------------------------- /8/config_files/build/shop-build.php: -------------------------------------------------------------------------------- 1 | id_profile = 1; 14 | $employee->email = 'demo'. $language['iso_code'] .'@prestashop.com'; 15 | $employee->id_lang = $language['id_lang']; 16 | $employee->setWsPasswd('prestashop_demo'); 17 | $employee->active = 1; 18 | $employee->optin = 1; 19 | $employee->firstname = 'Demo'; 20 | $employee->lastname = 'PrestaShop'; 21 | $employee->stats_date_from = date('Y-m-d', strtotime('-1 month')); 22 | $employee->stats_date_to = date('Y-m-d'); 23 | $employee->stats_compare_from = '0000-00-00'; 24 | $employee->stats_compare_to = '0000-00-00'; 25 | $employee->stats_compare_option = 1; 26 | $employee->bo_theme = 'default'; 27 | $employee->bo_css = 'admin-theme.css'; 28 | $employee->bo_width = 0; 29 | $employee->bo_menu = 1; 30 | $employee->default_tab = 1; 31 | $employee->last_passwd_gen = date('Y-m-d H:i:s'); 32 | $employee->add(); 33 | } 34 | 35 | // 36 | // Enable URL Rewriting 37 | // 38 | 39 | echo PHP_EOL.'* Enable url rewriting...'.PHP_EOL; 40 | Configuration::updateValue('PS_REWRITING_SETTINGS', 1); 41 | -------------------------------------------------------------------------------- /9/config_files/build/shop-build.php: -------------------------------------------------------------------------------- 1 | id_profile = 1; 14 | $employee->email = 'demo'. $language['iso_code'] .'@prestashop.com'; 15 | $employee->id_lang = $language['id_lang']; 16 | $employee->setWsPasswd('prestashop_demo'); 17 | $employee->active = 1; 18 | $employee->optin = 1; 19 | $employee->firstname = 'Demo'; 20 | $employee->lastname = 'PrestaShop'; 21 | $employee->stats_date_from = date('Y-m-d', strtotime('-1 month')); 22 | $employee->stats_date_to = date('Y-m-d'); 23 | $employee->stats_compare_from = '0000-00-00'; 24 | $employee->stats_compare_to = '0000-00-00'; 25 | $employee->stats_compare_option = 1; 26 | $employee->bo_theme = 'default'; 27 | $employee->bo_css = 'admin-theme.css'; 28 | $employee->bo_width = 0; 29 | $employee->bo_menu = 1; 30 | $employee->default_tab = 1; 31 | $employee->last_passwd_gen = date('Y-m-d H:i:s'); 32 | $employee->add(); 33 | } 34 | 35 | // 36 | // Enable URL Rewriting 37 | // 38 | 39 | echo PHP_EOL.'* Enable url rewriting...'.PHP_EOL; 40 | Configuration::updateValue('PS_REWRITING_SETTINGS', 1); 41 | -------------------------------------------------------------------------------- /1.5/config_files/build/shop-build.php: -------------------------------------------------------------------------------- 1 | id_profile = 1; 14 | $employee->email = 'demo'. $language['iso_code'] .'@prestashop.com'; 15 | $employee->id_lang = $language['id_lang']; 16 | $employee->passwd = Tools::encrypt('prestashop_demo'); 17 | $employee->active = 1; 18 | $employee->optin = 1; 19 | $employee->firstname = 'Demo'; 20 | $employee->lastname = 'PrestaShop'; 21 | $employee->stats_date_from = date('Y-m-d', strtotime('-1 month')); 22 | $employee->stats_date_to = date('Y-m-d'); 23 | $employee->stats_compare_from = '0000-00-00'; 24 | $employee->stats_compare_to = '0000-00-00'; 25 | $employee->stats_compare_option = 1; 26 | $employee->bo_theme = 'default'; 27 | $employee->bo_css = 'admin-theme.css'; 28 | $employee->bo_width = 0; 29 | $employee->bo_menu = 1; 30 | $employee->default_tab = 1; 31 | $employee->last_passwd_gen = date('Y-m-d H:i:s'); 32 | $employee->add(); 33 | } 34 | 35 | // 36 | // Enable URL Rewriting 37 | // 38 | 39 | echo PHP_EOL.'* Enable url rewriting...'.PHP_EOL; 40 | Configuration::updateValue('PS_REWRITING_SETTINGS', 1); 41 | -------------------------------------------------------------------------------- /1.6/config_files/build/shop-build.php: -------------------------------------------------------------------------------- 1 | id_profile = 1; 14 | $employee->email = 'demo'. $language['iso_code'] .'@prestashop.com'; 15 | $employee->id_lang = $language['id_lang']; 16 | $employee->passwd = Tools::encrypt('prestashop_demo'); 17 | $employee->active = 1; 18 | $employee->optin = 1; 19 | $employee->firstname = 'Demo'; 20 | $employee->lastname = 'PrestaShop'; 21 | $employee->stats_date_from = date('Y-m-d', strtotime('-1 month')); 22 | $employee->stats_date_to = date('Y-m-d'); 23 | $employee->stats_compare_from = '0000-00-00'; 24 | $employee->stats_compare_to = '0000-00-00'; 25 | $employee->stats_compare_option = 1; 26 | $employee->bo_theme = 'default'; 27 | $employee->bo_css = 'admin-theme.css'; 28 | $employee->bo_width = 0; 29 | $employee->bo_menu = 1; 30 | $employee->default_tab = 1; 31 | $employee->last_passwd_gen = date('Y-m-d H:i:s'); 32 | $employee->add(); 33 | } 34 | 35 | // 36 | // Enable URL Rewriting 37 | // 38 | 39 | echo PHP_EOL.'* Enable url rewriting...'.PHP_EOL; 40 | Configuration::updateValue('PS_REWRITING_SETTINGS', 1); 41 | -------------------------------------------------------------------------------- /1.7/config_files/build/shop-build.php: -------------------------------------------------------------------------------- 1 | id_profile = 1; 14 | $employee->email = 'demo'. $language['iso_code'] .'@prestashop.com'; 15 | $employee->id_lang = $language['id_lang']; 16 | $employee->passwd = Tools::encrypt('prestashop_demo'); 17 | $employee->active = 1; 18 | $employee->optin = 1; 19 | $employee->firstname = 'Demo'; 20 | $employee->lastname = 'PrestaShop'; 21 | $employee->stats_date_from = date('Y-m-d', strtotime('-1 month')); 22 | $employee->stats_date_to = date('Y-m-d'); 23 | $employee->stats_compare_from = '0000-00-00'; 24 | $employee->stats_compare_to = '0000-00-00'; 25 | $employee->stats_compare_option = 1; 26 | $employee->bo_theme = 'default'; 27 | $employee->bo_css = 'admin-theme.css'; 28 | $employee->bo_width = 0; 29 | $employee->bo_menu = 1; 30 | $employee->default_tab = 1; 31 | $employee->last_passwd_gen = date('Y-m-d H:i:s'); 32 | $employee->add(); 33 | } 34 | 35 | // 36 | // Enable URL Rewriting 37 | // 38 | 39 | echo PHP_EOL.'* Enable url rewriting...'.PHP_EOL; 40 | Configuration::updateValue('PS_REWRITING_SETTINGS', 1); 41 | -------------------------------------------------------------------------------- /beta/config_files/build/shop-build.php: -------------------------------------------------------------------------------- 1 | id_profile = 1; 14 | $employee->email = 'demo'. $language['iso_code'] .'@prestashop.com'; 15 | $employee->id_lang = $language['id_lang']; 16 | $employee->passwd = Tools::encrypt('prestashop_demo'); 17 | $employee->active = 1; 18 | $employee->optin = 1; 19 | $employee->firstname = 'Demo'; 20 | $employee->lastname = 'PrestaShop'; 21 | $employee->stats_date_from = date('Y-m-d', strtotime('-1 month')); 22 | $employee->stats_date_to = date('Y-m-d'); 23 | $employee->stats_compare_from = '0000-00-00'; 24 | $employee->stats_compare_to = '0000-00-00'; 25 | $employee->stats_compare_option = 1; 26 | $employee->bo_theme = 'default'; 27 | $employee->bo_css = 'admin-theme.css'; 28 | $employee->bo_width = 0; 29 | $employee->bo_menu = 1; 30 | $employee->default_tab = 1; 31 | $employee->last_passwd_gen = date('Y-m-d H:i:s'); 32 | $employee->add(); 33 | } 34 | 35 | // 36 | // Enable URL Rewriting 37 | // 38 | 39 | echo PHP_EOL.'* Enable url rewriting...'.PHP_EOL; 40 | Configuration::updateValue('PS_REWRITING_SETTINGS', 1); 41 | -------------------------------------------------------------------------------- /nightly/config_files/build/shop-build.php: -------------------------------------------------------------------------------- 1 | id_profile = 1; 14 | $employee->email = 'demo'. $language['iso_code'] .'@prestashop.com'; 15 | $employee->id_lang = $language['id_lang']; 16 | $employee->passwd = Tools::hash('prestashop_demo'); 17 | $employee->active = 1; 18 | $employee->optin = 1; 19 | $employee->firstname = 'Demo'; 20 | $employee->lastname = 'PrestaShop'; 21 | $employee->stats_date_from = date('Y-m-d', strtotime('-1 month')); 22 | $employee->stats_date_to = date('Y-m-d'); 23 | $employee->stats_compare_from = '0000-00-00'; 24 | $employee->stats_compare_to = '0000-00-00'; 25 | $employee->stats_compare_option = 1; 26 | $employee->bo_theme = 'default'; 27 | $employee->bo_css = 'admin-theme.css'; 28 | $employee->bo_width = 0; 29 | $employee->bo_menu = 1; 30 | $employee->default_tab = 1; 31 | $employee->last_passwd_gen = date('Y-m-d H:i:s'); 32 | $employee->add(); 33 | } 34 | 35 | // 36 | // Enable URL Rewriting 37 | // 38 | 39 | echo PHP_EOL.'* Enable url rewriting...'.PHP_EOL; 40 | Configuration::updateValue('PS_REWRITING_SETTINGS', 1); 41 | -------------------------------------------------------------------------------- /1.5/config_files/get-module.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Handle zip download 1.7 4 | displayStatusMessage() { 5 | local curl_error=$1 6 | 7 | case $curl_error in 8 | 1|3) 9 | Message="The URL was not properly formatted or the URL protocol is not supported (curlCode ${curl_error})." 10 | ;; 11 | 2|4) 12 | Message="This is likely to be an internal error or feature is not built-in (curlCode ${curl_error})." 13 | ;; 14 | 5|6|7) 15 | Message="Couldn't resolve host/proxy or failed to connect() to host/proxy (curlCode ${curl_error})." 16 | ;; 17 | *) 18 | Message="Error check man curl (curlCode ${curl_error})" 19 | ;; 20 | esac 21 | 22 | echo "${Message}" 23 | } 24 | 25 | # Slipt id in list 26 | IFS=', ' read -r -a ID_MODULE_LIST <<< "$ID_MODULE" 27 | 28 | for index in "${!ID_MODULE_LIST[@]}" 29 | do 30 | echo "\n* Requesting module ${ID_MODULE_LIST[index]} ..."; 31 | curl -u ${GET_USER} ${GET_FILE_MODULE}${ID_MODULE_LIST[index]} -L >> /var/www/html/modules/module.zip 32 | 33 | CMD_STATUS_CODE=$? 34 | if [ ${CMD_STATUS_CODE} != 0 ] 35 | then 36 | displayStatusMessage ${CMD_STATUS_CODE} 37 | else 38 | if [ ! -f /var/www/html/modules/module.zip ] || [ ! -s /var/www/html/modules/module.zip ] 39 | then 40 | echo "\n* Unable to download module ${ID_MODULE_LIST[index]} ..." 41 | else 42 | echo "\n* Unzipping the module ${ID_MODULE_LIST[index]} ..."; 43 | unzip -q /var/www/html/modules/module.zip -d /var/www/html/modules/ 44 | chown -R www-data:www-data /var/www/html/modules/ 45 | rm /var/www/html/modules/module.zip 46 | fi 47 | fi 48 | echo "\n" 49 | done 50 | -------------------------------------------------------------------------------- /1.6/config_files/get-module.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Handle zip download 1.7 4 | displayStatusMessage() { 5 | local curl_error=$1 6 | 7 | case $curl_error in 8 | 1|3) 9 | Message="The URL was not properly formatted or the URL protocol is not supported (curlCode ${curl_error})." 10 | ;; 11 | 2|4) 12 | Message="This is likely to be an internal error or feature is not built-in (curlCode ${curl_error})." 13 | ;; 14 | 5|6|7) 15 | Message="Couldn't resolve host/proxy or failed to connect() to host/proxy (curlCode ${curl_error})." 16 | ;; 17 | *) 18 | Message="Error check man curl (curlCode ${curl_error})" 19 | ;; 20 | esac 21 | 22 | echo "${Message}" 23 | } 24 | 25 | # Slipt id in list 26 | IFS=', ' read -r -a ID_MODULE_LIST <<< "$ID_MODULE" 27 | 28 | for index in "${!ID_MODULE_LIST[@]}" 29 | do 30 | echo "\n* Requesting module ${ID_MODULE_LIST[index]} ..."; 31 | curl -u ${GET_USER} ${GET_FILE_MODULE}${ID_MODULE_LIST[index]} -L >> /var/www/html/modules/module.zip 32 | 33 | CMD_STATUS_CODE=$? 34 | if [ ${CMD_STATUS_CODE} != 0 ] 35 | then 36 | displayStatusMessage ${CMD_STATUS_CODE} 37 | else 38 | if [ ! -f /var/www/html/modules/module.zip ] || [ ! -s /var/www/html/modules/module.zip ] 39 | then 40 | echo "\n* Unable to download module ${ID_MODULE_LIST[index]} ..." 41 | else 42 | echo "\n* Unzipping the module ${ID_MODULE_LIST[index]} ..."; 43 | unzip -q /var/www/html/modules/module.zip -d /var/www/html/modules/ 44 | chown -R www-data:www-data /var/www/html/modules/ 45 | rm /var/www/html/modules/module.zip 46 | fi 47 | fi 48 | echo "\n" 49 | done 50 | -------------------------------------------------------------------------------- /1.5/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prestashop/prestashop:1.5 2 | 3 | ENV GET_USER "" 4 | ENV GET_FILE_MODULE "" 5 | ENV ID_MODULE 0 6 | 7 | ENV PS_HANDLE_DYNAMIC_DOMAIN 0 8 | ENV PS_INSTALL_AUTO 1 9 | ENV PS_DEV_MODE 1 10 | ENV PS_COUNTRY fr 11 | ENV PS_ALL_LANGUAGES 1 12 | ENV PS_FOLDER_ADMIN admin-dev 13 | ENV PS_FOLDER_INSTALL install-dev 14 | ENV DB_SERVER localhost 15 | ENV DB_USER macfly 16 | 17 | ENV DEBIAN_FRONTEND noninteractive 18 | 19 | RUN apt update \ 20 | && apt install -y default-mysql-server \ 21 | && rm -rf /var/lib/apt/lists/* 22 | 23 | # MySQL installation 24 | # Avoid MySQL questions during installation 25 | RUN echo mysql-server-5.6 mysql-server/root_password password $DB_PASSWD | debconf-set-selections 26 | RUN echo mysql-server-5.6 mysql-server/root_password_again password $DB_PASSWD | debconf-set-selections 27 | # MySQL configuration 28 | RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf 29 | EXPOSE 3306 30 | EXPOSE 443 31 | 32 | RUN echo '[mysql.server]\nservice-startup-timeout = -1' >> /etc/mysql/conf.d/startup.cnf 33 | RUN service mysql start \ 34 | && mysql -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWD'; GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" mysql \ 35 | && mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD create $DB_NAME --force 36 | 37 | COPY config_files/build/my-minimal.cnf /etc/mysql/conf.d/my-minimal.cnf 38 | COPY config_files/docker-customization_run.sh /tmp/docker-customization_run.sh 39 | COPY config_files/get-module.sh /tmp/get-module.sh 40 | COPY config_files/update-domain.php /tmp/update-domain.php 41 | RUN chmod u+x /tmp/docker-customization_run.sh /tmp/get-module.sh 42 | 43 | RUN sed -ie "s/post_max_size\ =\ 20M/post_max_size\ =\ 40M/g" /usr/local/etc/php/php.ini 44 | RUN sed -ie "s/upload_max_filesize\ =\ 20M/upload_max_filesize\ =\ 40M/g" /usr/local/etc/php/php.ini 45 | 46 | RUN sed -i -e"s/^exec\s*apache2-foreground/#exec apache2-foreground/" /tmp/docker_run.sh 47 | RUN service mysql start && /tmp/docker_run.sh 48 | RUN sed -i -e"s/^#exec\s*apache2-foreground/exec apache2-foreground/" /tmp/docker_run.sh 49 | 50 | COPY config_files/build/shop-build.php /tmp/build/shop-build.php 51 | RUN service mysql start && runuser -g www-data -u www-data -- php /tmp/build/shop-build.php 52 | 53 | CMD ["/tmp/docker-customization_run.sh"] 54 | -------------------------------------------------------------------------------- /1.6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prestashop/prestashop:1.6-7.1-apache 2 | 3 | ENV GET_USER "" 4 | ENV GET_FILE_MODULE "" 5 | ENV ID_MODULE 0 6 | 7 | ENV PS_HANDLE_DYNAMIC_DOMAIN 0 8 | ENV PS_INSTALL_AUTO 1 9 | ENV PS_DEV_MODE 1 10 | ENV PS_COUNTRY fr 11 | # Allow some builds (CI for instance) to not install all languages 12 | ARG INSTALL_LANGUAGES=1 13 | ENV PS_ALL_LANGUAGES ${INSTALL_LANGUAGES} 14 | ENV PS_FOLDER_ADMIN admin-dev 15 | ENV PS_FOLDER_INSTALL install-dev 16 | ENV DB_SERVER localhost 17 | ENV DB_USER macfly 18 | 19 | ENV DEBIAN_FRONTEND noninteractive 20 | 21 | RUN apt update \ 22 | && apt install -y default-mysql-server \ 23 | && rm -rf /var/lib/apt/lists/* 24 | 25 | # MySQL installation 26 | # Avoid MySQL questions during installation 27 | RUN echo mysql-server-5.6 mysql-server/root_password password $DB_PASSWD | debconf-set-selections 28 | RUN echo mysql-server-5.6 mysql-server/root_password_again password $DB_PASSWD | debconf-set-selections 29 | # MySQL configuration 30 | RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf 31 | EXPOSE 3306 32 | EXPOSE 443 33 | 34 | RUN echo '[mysql.server]\nservice-startup-timeout = -1' >> /etc/mysql/conf.d/startup.cnf 35 | RUN service mysql start \ 36 | && mysql -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWD'; GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" mysql \ 37 | && mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD create $DB_NAME --force 38 | 39 | COPY config_files/build/my-minimal.cnf /etc/mysql/conf.d/my-minimal.cnf 40 | COPY config_files/docker-customization_run.sh /tmp/docker-customization_run.sh 41 | COPY config_files/get-module.sh /tmp/get-module.sh 42 | COPY config_files/update-domain.php /tmp/update-domain.php 43 | RUN chmod u+x /tmp/docker-customization_run.sh /tmp/get-module.sh 44 | 45 | RUN sed -ie "s/post_max_size\ =\ 20M/post_max_size\ =\ 40M/g" /usr/local/etc/php/php.ini 46 | RUN sed -ie "s/upload_max_filesize\ =\ 20M/upload_max_filesize\ =\ 40M/g" /usr/local/etc/php/php.ini 47 | 48 | RUN sed -i -e"s/^exec\s*apache2-foreground/#exec apache2-foreground/" /tmp/docker_run.sh 49 | RUN service mysql start && /tmp/docker_run.sh 50 | RUN sed -i -e"s/^#exec\s*apache2-foreground/exec apache2-foreground/" /tmp/docker_run.sh 51 | 52 | COPY config_files/build/shop-build.php /tmp/build/shop-build.php 53 | RUN service mysql start && runuser -g www-data -u www-data -- php /tmp/build/shop-build.php 54 | 55 | CMD ["/tmp/docker-customization_run.sh"] 56 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Docker Internal images 2 | 3 | This repository provides additional Docker images for a quick deployment of PrestaShop. 4 | 5 | ⚠️ They are not designed for running an e-commerce activity in production. 6 | 7 | ## Description 8 | 9 | These Docker files are based on the images [prestashop/prestashop](https://hub.docker.com/r/prestashop/prestashop/). 10 | With the Apache + PHP server already present, a MySQL server is installed and configured for a small environment (only one user per running website) to avoid too much memory consumption. 11 | 12 | Each tag of this images has the following content: 13 | * PrestaShop is pre-installed during the build 14 | * All existing languages are being added at the same time. 15 | * One employee per language is created (`demo@prestashop.com`) 16 | * URL rewriting is enabled 17 | 18 | For each PrestaShop major version, we chose the best compromise between reliability and speed of PHP. 19 | 20 | ## Installation 21 | 22 | Images are being stored by default on Docker hub. They can be downloaded with: 23 | 24 | ```bash 25 | docker pull prestashop/docker-internal-images[:tag] 26 | ``` 27 | 28 | Possible values for the tag are: `9`, `8`, `1.7`, `1.6`, `1.5`, `nightly`. Not providing this parameter will fallback on the highest stable PrestaShop version. 29 | 30 | ## Running this image 31 | 32 | To run this images flawlessly on your environment, we advice you to find an available port on the host, then bind it 33 | to the container and the domain parameter. 34 | 35 | This example runs a pre-installed PrestaShop 8 on the port 8003 of the local machine: 36 | 37 | ```bash 38 | docker run -ti -p 8003:80 \ 39 | -e PS_DOMAIN=localhost:8003 \ 40 | -e PS_TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR \ 41 | -e PS_ENABLE_SSL=0 \ 42 | prestashop/docker-internal-images:9 43 | 44 | ``` 45 | 46 | 47 | ## Contributing 48 | 49 | Changes can be suggested on https://github.com/PrestaShop/docker-internal-images. 50 | 51 | During the development, you may try to build new local images by running the following commands: 52 | 53 | ```bash 54 | docker build -t prestashop/docker-internal-images:9 9 55 | docker build -t prestashop/docker-internal-images:8 8 56 | docker build -t prestashop/docker-internal-images:1.7 1.7 57 | docker build -t prestashop/docker-internal-images:1.6 1.6 58 | docker build -t prestashop/docker-internal-images:1.5 1.5 59 | docker build -t prestashop/docker-internal-images:nightly nightly 60 | ``` 61 | 62 | Then follow the step "Running this image" to create a container from these new tags. 63 | 64 | Make sure each subfolder got the same improvement or only one tag will be updated. 65 | -------------------------------------------------------------------------------- /beta/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prestashop/prestashop:beta-7.3-apache 2 | 3 | ENV GET_USER "" 4 | ENV GET_FILE_MODULE "" 5 | ENV ID_MODULE 0 6 | 7 | ENV PS_HANDLE_DYNAMIC_DOMAIN 0 8 | ENV PS_INSTALL_AUTO 1 9 | ENV PS_DEV_MODE 1 10 | ENV PS_COUNTRY fr 11 | # Allow some builds (CI for instance) to not install all languages 12 | ARG INSTALL_LANGUAGES=1 13 | ENV PS_ALL_LANGUAGES ${INSTALL_LANGUAGES} 14 | ENV PS_FOLDER_ADMIN admin-dev 15 | ENV PS_FOLDER_INSTALL install-dev 16 | ENV DB_SERVER localhost 17 | ENV DB_USER macfly 18 | ENV PS_ENABLE_SSL 1 19 | 20 | ENV DEBIAN_FRONTEND noninteractive 21 | 22 | RUN apt update \ 23 | && apt install -y default-mysql-server ssl-cert \ 24 | && rm -rf /var/lib/apt/lists/* 25 | 26 | # XDebug extension 27 | RUN pecl install xdebug-3.1.6 28 | 29 | # MySQL installation 30 | # Avoid MySQL questions during installation 31 | RUN echo mysql-server-5.6 mysql-server/root_password password $DB_PASSWD | debconf-set-selections 32 | RUN echo mysql-server-5.6 mysql-server/root_password_again password $DB_PASSWD | debconf-set-selections 33 | # MySQL configuration 34 | RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf 35 | EXPOSE 3306 36 | 37 | # SSL configuration 38 | RUN a2enmod ssl 39 | RUN ln -s $APACHE_CONFDIR/sites-available/default-ssl.conf $APACHE_CONFDIR/sites-enabled/default-ssl.conf 40 | EXPOSE 443 41 | 42 | RUN echo '[mysql.server]\nservice-startup-timeout = -1' >> /etc/mysql/conf.d/startup.cnf 43 | RUN service mysql start \ 44 | && mysql -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWD'; GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" mysql \ 45 | && mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD create $DB_NAME --force 46 | 47 | COPY config_files/build/my-minimal.cnf /etc/mysql/conf.d/my-minimal.cnf 48 | COPY config_files/docker-customization_run.sh /tmp/docker-customization_run.sh 49 | COPY config_files/get-module.sh /tmp/get-module.sh 50 | COPY config_files/update-domain.php /tmp/update-domain.php 51 | RUN chmod u+x /tmp/docker-customization_run.sh /tmp/get-module.sh 52 | 53 | RUN sed -ie "s/post_max_size\ =\ 20M/post_max_size\ =\ 40M/g" /usr/local/etc/php/php.ini 54 | RUN sed -ie "s/upload_max_filesize\ =\ 20M/upload_max_filesize\ =\ 40M/g" /usr/local/etc/php/php.ini 55 | 56 | RUN sed -i -e"s/^exec\s*apache2-foreground/#exec apache2-foreground/" /tmp/docker_run.sh 57 | RUN service mysql start && /tmp/docker_run.sh 58 | RUN sed -i -e"s/^#exec\s*apache2-foreground/exec apache2-foreground/" /tmp/docker_run.sh 59 | 60 | COPY config_files/build/shop-build.php /tmp/build/shop-build.php 61 | RUN service mysql start \ 62 | && runuser -g www-data -u www-data -- php /tmp/build/shop-build.php \ 63 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=prod \ 64 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=dev 65 | 66 | CMD ["/tmp/docker-customization_run.sh"] 67 | -------------------------------------------------------------------------------- /8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prestashop/prestashop:8 2 | 3 | ENV GET_USER="" 4 | ENV GET_FILE_MODULE="" 5 | ENV ID_MODULE=0 6 | ENV PHP_MEMORY_LIMIT=256 7 | 8 | ENV PS_HANDLE_DYNAMIC_DOMAIN=0 9 | ENV PS_INSTALL_AUTO=1 10 | ENV PS_DEV_MODE=1 11 | ENV PS_COUNTRY=fr 12 | # Allow some builds (CI for instance) to not install all languages 13 | ARG INSTALL_LANGUAGES=1 14 | ENV PS_ALL_LANGUAGES=${INSTALL_LANGUAGES} 15 | ENV PS_FOLDER_ADMIN=admin-dev 16 | ENV PS_FOLDER_INSTALL=install-dev 17 | ENV DB_SERVER=localhost 18 | ENV DB_USER=macfly 19 | ENV PS_ENABLE_SSL=1 20 | 21 | ENV DEBIAN_FRONTEND=noninteractive 22 | 23 | RUN apt update \ 24 | && apt install -y default-mysql-server ssl-cert \ 25 | && rm -rf /var/lib/apt/lists/* 26 | 27 | # XDebug extension 28 | RUN pecl install xdebug 29 | 30 | # MySQL installation 31 | # Avoid MySQL questions during installation 32 | RUN echo mysql-server-5.6 mysql-server/root_password password $DB_PASSWD | debconf-set-selections 33 | RUN echo mysql-server-5.6 mysql-server/root_password_again password $DB_PASSWD | debconf-set-selections 34 | # MySQL configuration 35 | RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf 36 | EXPOSE 3306 37 | 38 | # SSL configuration 39 | RUN a2enmod ssl 40 | RUN ln -s $APACHE_CONFDIR/sites-available/default-ssl.conf $APACHE_CONFDIR/sites-enabled/default-ssl.conf 41 | EXPOSE 443 42 | 43 | RUN echo '[mysql.server]\nservice-startup-timeout = -1' >> /etc/mysql/conf.d/startup.cnf 44 | RUN service mariadb start \ 45 | && mysql -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWD'; GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" mysql \ 46 | && mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD create $DB_NAME --force 47 | 48 | COPY config_files/build/my-minimal.cnf /etc/mysql/conf.d/my-minimal.cnf 49 | COPY config_files/docker-customization_run.sh /tmp/docker-customization_run.sh 50 | COPY config_files/get-module.sh /tmp/get-module.sh 51 | COPY config_files/update-domain.php /tmp/update-domain.php 52 | RUN chmod u+x /tmp/docker-customization_run.sh /tmp/get-module.sh 53 | 54 | RUN sed -ie "s/post_max_size\ =\ 20M/post_max_size\ =\ 40M/g" /usr/local/etc/php/php.ini 55 | RUN sed -ie "s/upload_max_filesize\ =\ 20M/upload_max_filesize\ =\ 40M/g" /usr/local/etc/php/php.ini 56 | 57 | RUN sed -i -e"s/^exec\s*apache2-foreground/#exec apache2-foreground/" /tmp/docker_run.sh 58 | RUN service mariadb start && /tmp/docker_run.sh 59 | RUN sed -i -e"s/^#exec\s*apache2-foreground/exec apache2-foreground/" /tmp/docker_run.sh 60 | 61 | COPY config_files/build/shop-build.php /tmp/build/shop-build.php 62 | RUN service mariadb start \ 63 | && runuser -g www-data -u www-data -- php /tmp/build/shop-build.php \ 64 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=prod \ 65 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=dev 66 | 67 | CMD ["/tmp/docker-customization_run.sh"] 68 | -------------------------------------------------------------------------------- /9/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prestashop/prestashop:9 2 | 3 | ENV GET_USER="" 4 | ENV GET_FILE_MODULE="" 5 | ENV ID_MODULE=0 6 | ENV PHP_MEMORY_LIMIT=256 7 | 8 | ENV PS_HANDLE_DYNAMIC_DOMAIN=0 9 | ENV PS_INSTALL_AUTO=1 10 | ENV PS_DEV_MODE=1 11 | ENV PS_COUNTRY=fr 12 | # Allow some builds (CI for instance) to not install all languages 13 | ARG INSTALL_LANGUAGES=1 14 | ENV PS_ALL_LANGUAGES=${INSTALL_LANGUAGES} 15 | ENV PS_FOLDER_ADMIN=admin-dev 16 | ENV PS_FOLDER_INSTALL=install-dev 17 | ENV DB_SERVER=localhost 18 | ENV DB_USER=macfly 19 | ENV PS_ENABLE_SSL=1 20 | 21 | ENV DEBIAN_FRONTEND=noninteractive 22 | 23 | RUN apt update \ 24 | && apt install -y default-mysql-server ssl-cert \ 25 | && rm -rf /var/lib/apt/lists/* 26 | 27 | # XDebug extension 28 | RUN pecl install xdebug 29 | 30 | # MySQL installation 31 | # Avoid MySQL questions during installation 32 | RUN echo mysql-server-5.6 mysql-server/root_password password $DB_PASSWD | debconf-set-selections 33 | RUN echo mysql-server-5.6 mysql-server/root_password_again password $DB_PASSWD | debconf-set-selections 34 | # MySQL configuration 35 | RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf 36 | EXPOSE 3306 37 | 38 | # SSL configuration 39 | RUN a2enmod ssl 40 | RUN ln -s $APACHE_CONFDIR/sites-available/default-ssl.conf $APACHE_CONFDIR/sites-enabled/default-ssl.conf 41 | EXPOSE 443 42 | 43 | RUN echo '[mysql.server]\nservice-startup-timeout = -1' >> /etc/mysql/conf.d/startup.cnf 44 | RUN service mariadb start \ 45 | && mysql -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWD'; GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" mysql \ 46 | && mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD create $DB_NAME --force 47 | 48 | COPY config_files/build/my-minimal.cnf /etc/mysql/conf.d/my-minimal.cnf 49 | COPY config_files/docker-customization_run.sh /tmp/docker-customization_run.sh 50 | COPY config_files/get-module.sh /tmp/get-module.sh 51 | COPY config_files/update-domain.php /tmp/update-domain.php 52 | RUN chmod u+x /tmp/docker-customization_run.sh /tmp/get-module.sh 53 | 54 | RUN sed -ie "s/post_max_size\ =\ 20M/post_max_size\ =\ 40M/g" /usr/local/etc/php/php.ini 55 | RUN sed -ie "s/upload_max_filesize\ =\ 20M/upload_max_filesize\ =\ 40M/g" /usr/local/etc/php/php.ini 56 | 57 | RUN sed -i -e"s/^exec\s*apache2-foreground/#exec apache2-foreground/" /tmp/docker_run.sh 58 | RUN service mariadb start && /tmp/docker_run.sh 59 | RUN sed -i -e"s/^#exec\s*apache2-foreground/exec apache2-foreground/" /tmp/docker_run.sh 60 | 61 | COPY config_files/build/shop-build.php /tmp/build/shop-build.php 62 | RUN service mariadb start \ 63 | && runuser -g www-data -u www-data -- php /tmp/build/shop-build.php \ 64 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=prod \ 65 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=dev 66 | 67 | CMD ["/tmp/docker-customization_run.sh"] 68 | -------------------------------------------------------------------------------- /1.7/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prestashop/prestashop:1.7 2 | 3 | ENV GET_USER "" 4 | ENV GET_FILE_MODULE "" 5 | ENV ID_MODULE 0 6 | ENV PHP_MEMORY_LIMIT 256 7 | 8 | ENV PS_HANDLE_DYNAMIC_DOMAIN 0 9 | ENV PS_INSTALL_AUTO 1 10 | ENV PS_DEV_MODE 1 11 | ENV PS_COUNTRY fr 12 | # Allow some builds (CI for instance) to not install all languages 13 | ARG INSTALL_LANGUAGES=1 14 | ENV PS_ALL_LANGUAGES ${INSTALL_LANGUAGES} 15 | ENV PS_FOLDER_ADMIN admin-dev 16 | ENV PS_FOLDER_INSTALL install-dev 17 | ENV DB_SERVER localhost 18 | ENV DB_USER macfly 19 | ENV PS_ENABLE_SSL 1 20 | 21 | ENV DEBIAN_FRONTEND noninteractive 22 | 23 | RUN apt update \ 24 | && apt install -y default-mysql-server ssl-cert \ 25 | && rm -rf /var/lib/apt/lists/* 26 | 27 | # XDebug extension 28 | RUN pecl install xdebug-3.1.6 29 | 30 | # MySQL installation 31 | # Avoid MySQL questions during installation 32 | RUN echo mysql-server-5.6 mysql-server/root_password password $DB_PASSWD | debconf-set-selections 33 | RUN echo mysql-server-5.6 mysql-server/root_password_again password $DB_PASSWD | debconf-set-selections 34 | # MySQL configuration 35 | RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf 36 | EXPOSE 3306 37 | 38 | # SSL configuration 39 | RUN a2enmod ssl 40 | RUN ln -s $APACHE_CONFDIR/sites-available/default-ssl.conf $APACHE_CONFDIR/sites-enabled/default-ssl.conf 41 | EXPOSE 443 42 | 43 | RUN echo '[mysql.server]\nservice-startup-timeout = -1' >> /etc/mysql/conf.d/startup.cnf 44 | RUN service mariadb start \ 45 | && mysql -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWD'; GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" mysql \ 46 | && mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD create $DB_NAME --force 47 | 48 | COPY config_files/build/my-minimal.cnf /etc/mysql/conf.d/my-minimal.cnf 49 | COPY config_files/docker-customization_run.sh /tmp/docker-customization_run.sh 50 | COPY config_files/get-module.sh /tmp/get-module.sh 51 | COPY config_files/update-domain.php /tmp/update-domain.php 52 | RUN chmod u+x /tmp/docker-customization_run.sh /tmp/get-module.sh 53 | 54 | RUN sed -ie "s/post_max_size\ =\ 20M/post_max_size\ =\ 40M/g" /usr/local/etc/php/php.ini 55 | RUN sed -ie "s/upload_max_filesize\ =\ 20M/upload_max_filesize\ =\ 40M/g" /usr/local/etc/php/php.ini 56 | 57 | RUN sed -i -e"s/^exec\s*apache2-foreground/#exec apache2-foreground/" /tmp/docker_run.sh 58 | RUN service mariadb start && /tmp/docker_run.sh 59 | RUN sed -i -e"s/^#exec\s*apache2-foreground/exec apache2-foreground/" /tmp/docker_run.sh 60 | 61 | COPY config_files/build/shop-build.php /tmp/build/shop-build.php 62 | RUN service mariadb start \ 63 | && runuser -g www-data -u www-data -- php /tmp/build/shop-build.php \ 64 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=prod \ 65 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=dev 66 | 67 | CMD ["/tmp/docker-customization_run.sh"] 68 | -------------------------------------------------------------------------------- /nightly/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prestashop/prestashop:nightly 2 | ENV GET_USER="" 3 | ENV GET_FILE_MODULE="" 4 | ENV ID_MODULE=0 5 | ENV PHP_MEMORY_LIMIT=256 6 | 7 | ENV PS_HANDLE_DYNAMIC_DOMAIN=0 8 | ENV PS_INSTALL_AUTO=1 9 | ENV PS_DEV_MODE=1 10 | ENV PS_COUNTRY=fr 11 | # Allow some builds (CI for instance) to not install all languages 12 | ARG INSTALL_LANGUAGES=1 13 | ENV PS_ALL_LANGUAGES=${INSTALL_LANGUAGES} 14 | ENV PS_FOLDER_ADMIN=admin-dev 15 | ENV PS_FOLDER_INSTALL=install-dev 16 | ENV DB_SERVER=localhost 17 | ENV DB_USER=macfly 18 | ENV PS_ENABLE_SSL=1 19 | 20 | ENV DEBIAN_FRONTEND=noninteractive 21 | 22 | RUN apt update \ 23 | && apt install -y default-mysql-server ssl-cert \ 24 | && rm -rf /var/lib/apt/lists/* 25 | 26 | # XDebug extension 27 | RUN pecl install xdebug 28 | 29 | # MySQL installation 30 | # Avoid MySQL questions during installation 31 | RUN echo mysql-server-5.6 mysql-server/root_password password $DB_PASSWD | debconf-set-selections 32 | RUN echo mysql-server-5.6 mysql-server/root_password_again password $DB_PASSWD | debconf-set-selections 33 | # MySQL configuration 34 | RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf 35 | EXPOSE 3306 36 | 37 | # SSL configuration 38 | RUN a2enmod ssl 39 | RUN ln -s $APACHE_CONFDIR/sites-available/default-ssl.conf $APACHE_CONFDIR/sites-enabled/default-ssl.conf 40 | EXPOSE 443 41 | 42 | RUN echo '[mysql.server]\nservice-startup-timeout = -1' >> /etc/mysql/conf.d/startup.cnf 43 | RUN service mariadb start \ 44 | && mysql -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWD'; GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" mysql \ 45 | && mysqladmin -h $DB_SERVER -P $DB_PORT -u $DB_USER -p$DB_PASSWD create $DB_NAME --force 46 | 47 | COPY config_files/build/my-minimal.cnf /etc/mysql/conf.d/my-minimal.cnf 48 | COPY config_files/docker-customization_run.sh /tmp/docker-customization_run.sh 49 | COPY config_files/get-module.sh /tmp/get-module.sh 50 | COPY config_files/update-domain.php /tmp/update-domain.php 51 | RUN chmod u+x /tmp/docker-customization_run.sh /tmp/get-module.sh 52 | 53 | RUN sed -ie "s/post_max_size\ =\ 20M/post_max_size\ =\ 40M/g" /usr/local/etc/php/php.ini 54 | RUN sed -ie "s/upload_max_filesize\ =\ 20M/upload_max_filesize\ =\ 40M/g" /usr/local/etc/php/php.ini 55 | 56 | RUN sed -i -e"s/^exec\s*apache2-foreground/#exec apache2-foreground/" /tmp/docker_run.sh 57 | RUN service mariadb start && /tmp/docker_nightly_run.sh 58 | RUN sed -i -e"s/^#exec\s*apache2-foreground/exec apache2-foreground/" /tmp/docker_run.sh 59 | 60 | COPY config_files/build/shop-build.php /tmp/build/shop-build.php 61 | RUN service mariadb start \ 62 | && runuser -g www-data -u www-data -- php /tmp/build/shop-build.php \ 63 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=prod \ 64 | && runuser -g www-data -u www-data -- php -d memory_limit=-1 bin/console cache:warmup --env=dev 65 | 66 | CMD ["/tmp/docker-customization_run.sh"] 67 | -------------------------------------------------------------------------------- /1.7/config_files/get-module.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Unset ENV variables - conflict during Module installation 4 | # 5 | PS_DEV_MODE_ORIGIN=${PS_DEV_MODE} 6 | unset PS_DEV_MODE 7 | PS_DEMO_MODE_ORIGIN=${PS_DEMO_MODE} 8 | unset PS_DEMO_MODE 9 | 10 | 11 | # Handle zip download 1.7 12 | displayStatusMessage() { 13 | local curl_error=$1 14 | 15 | case $curl_error in 16 | 1|3) 17 | Message="The URL was not properly formatted or the URL protocol is not supported (curlCode ${curl_error})." 18 | ;; 19 | 2|4) 20 | Message="This is likely to be an internal error or feature is not built-in (curlCode ${curl_error})." 21 | ;; 22 | 5|6|7) 23 | Message="Couldn't resolve host/proxy or failed to connect() to host/proxy (curlCode ${curl_error})." 24 | ;; 25 | *) 26 | Message="Error check man curl (curlCode ${curl_error})" 27 | ;; 28 | esac 29 | 30 | echo "${Message}" 31 | } 32 | 33 | installModule() { 34 | local moduleName=$1 35 | 36 | echo "\n* Installing module $moduleName ..." 37 | php bin/console prestashop:module install $moduleName 38 | php bin/console prestashop:module configure $moduleName 39 | } 40 | 41 | # Split id_module in list 42 | IFS=', ' read -r -a ID_MODULE_LIST <<< "$ID_MODULE" 43 | # Split module_name_toinstall in list 44 | IFS=', ' read -r -a MODULE_NAME_TOINSTALL_LIST <<< "$MODULE_NAME_TOINSTALL" 45 | 46 | for index in "${!ID_MODULE_LIST[@]}" 47 | do 48 | echo "\n* Requesting module ${ID_MODULE_LIST[index]} ..."; 49 | curl -u ${GET_USER} ${GET_FILE_MODULE}${ID_MODULE_LIST[index]} -L >> /var/www/html/modules/module.zip 50 | 51 | CMD_STATUS_CODE=$? 52 | if [ ${CMD_STATUS_CODE} != 0 ] 53 | then 54 | displayStatusMessage ${CMD_STATUS_CODE} 55 | else 56 | if [ ! -f /var/www/html/modules/module.zip ] || [ ! -s /var/www/html/modules/module.zip ] 57 | then 58 | echo "\n* Unable to download module ${ID_MODULE_LIST[index]} ..." 59 | else 60 | echo "\n* Unzipping the module ${ID_MODULE_LIST[index]} ..."; 61 | unzip -o -q /var/www/html/modules/module.zip -d /var/www/html/modules/ 62 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 63 | then 64 | MODULE_NAME=$(basename $( \ 65 | unzip -l modules/module.zip 2>&1 \ 66 | | grep -E '^\s+[0-9]+\s+[0-9-]+\s+[0-9:]+' \ 67 | | awk -F' ' '{print $4}'| head -1 68 | ) 69 | ) 70 | installModule ${MODULE_NAME} 71 | fi 72 | rm /var/www/html/modules/module.zip 73 | fi 74 | fi 75 | echo "\n" 76 | done 77 | 78 | # Module installation block 79 | # 80 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 81 | then 82 | echo "\n* Modules have already been installed [ All option ]" 83 | else 84 | for index in "${!MODULE_NAME_TOINSTALL_LIST[@]}" 85 | do 86 | if [ -d "modules/${MODULE_NAME_TOINSTALL_LIST[index]}" ] 87 | then 88 | installModule ${MODULE_NAME_TOINSTALL_LIST[index]} 89 | else 90 | echo "\n* module ${MODULE_NAME_TOINSTALL_LIST[index]} is not present on modules directory ..." 91 | fi 92 | done 93 | fi 94 | 95 | # Restore ENV variables 96 | export PS_DEV_MODE=${PS_DEV_MODE_ORIGIN} 97 | unset PS_DEV_MODE_ORIGIN 98 | export PS_DEMO_MODE=${PS_DEMO_MODE_ORIGIN} 99 | unset PS_DEMO_MODE_ORIGIN 100 | 101 | -------------------------------------------------------------------------------- /8/config_files/get-module.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Unset ENV variables - conflict during Module installation 4 | # 5 | PS_DEV_MODE_ORIGIN=${PS_DEV_MODE} 6 | unset PS_DEV_MODE 7 | PS_DEMO_MODE_ORIGIN=${PS_DEMO_MODE} 8 | unset PS_DEMO_MODE 9 | 10 | 11 | # Handle zip download 1.7 12 | displayStatusMessage() { 13 | local curl_error=$1 14 | 15 | case $curl_error in 16 | 1|3) 17 | Message="The URL was not properly formatted or the URL protocol is not supported (curlCode ${curl_error})." 18 | ;; 19 | 2|4) 20 | Message="This is likely to be an internal error or feature is not built-in (curlCode ${curl_error})." 21 | ;; 22 | 5|6|7) 23 | Message="Couldn't resolve host/proxy or failed to connect() to host/proxy (curlCode ${curl_error})." 24 | ;; 25 | *) 26 | Message="Error check man curl (curlCode ${curl_error})" 27 | ;; 28 | esac 29 | 30 | echo "${Message}" 31 | } 32 | 33 | installModule() { 34 | local moduleName=$1 35 | 36 | echo "\n* Installing module $moduleName ..." 37 | php bin/console prestashop:module install $moduleName 38 | php bin/console prestashop:module configure $moduleName 39 | } 40 | 41 | # Split id_module in list 42 | IFS=', ' read -r -a ID_MODULE_LIST <<< "$ID_MODULE" 43 | # Split module_name_toinstall in list 44 | IFS=', ' read -r -a MODULE_NAME_TOINSTALL_LIST <<< "$MODULE_NAME_TOINSTALL" 45 | 46 | for index in "${!ID_MODULE_LIST[@]}" 47 | do 48 | echo "\n* Requesting module ${ID_MODULE_LIST[index]} ..."; 49 | curl -u ${GET_USER} ${GET_FILE_MODULE}${ID_MODULE_LIST[index]} -L >> /var/www/html/modules/module.zip 50 | 51 | CMD_STATUS_CODE=$? 52 | if [ ${CMD_STATUS_CODE} != 0 ] 53 | then 54 | displayStatusMessage ${CMD_STATUS_CODE} 55 | else 56 | if [ ! -f /var/www/html/modules/module.zip ] || [ ! -s /var/www/html/modules/module.zip ] 57 | then 58 | echo "\n* Unable to download module ${ID_MODULE_LIST[index]} ..." 59 | else 60 | echo "\n* Unzipping the module ${ID_MODULE_LIST[index]} ..."; 61 | unzip -o -q /var/www/html/modules/module.zip -d /var/www/html/modules/ 62 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 63 | then 64 | MODULE_NAME=$(basename $( \ 65 | unzip -l modules/module.zip 2>&1 \ 66 | | grep -E '^\s+[0-9]+\s+[0-9-]+\s+[0-9:]+' \ 67 | | awk -F' ' '{print $4}'| head -1 68 | ) 69 | ) 70 | installModule ${MODULE_NAME} 71 | fi 72 | rm /var/www/html/modules/module.zip 73 | fi 74 | fi 75 | echo "\n" 76 | done 77 | 78 | # Module installation block 79 | # 80 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 81 | then 82 | echo "\n* Modules have already been installed [ All option ]" 83 | else 84 | for index in "${!MODULE_NAME_TOINSTALL_LIST[@]}" 85 | do 86 | if [ -d "modules/${MODULE_NAME_TOINSTALL_LIST[index]}" ] 87 | then 88 | installModule ${MODULE_NAME_TOINSTALL_LIST[index]} 89 | else 90 | echo "\n* module ${MODULE_NAME_TOINSTALL_LIST[index]} is not present on modules directory ..." 91 | fi 92 | done 93 | fi 94 | 95 | # Restore ENV variables 96 | export PS_DEV_MODE=${PS_DEV_MODE_ORIGIN} 97 | unset PS_DEV_MODE_ORIGIN 98 | export PS_DEMO_MODE=${PS_DEMO_MODE_ORIGIN} 99 | unset PS_DEMO_MODE_ORIGIN 100 | 101 | -------------------------------------------------------------------------------- /9/config_files/get-module.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Unset ENV variables - conflict during Module installation 4 | # 5 | PS_DEV_MODE_ORIGIN=${PS_DEV_MODE} 6 | unset PS_DEV_MODE 7 | PS_DEMO_MODE_ORIGIN=${PS_DEMO_MODE} 8 | unset PS_DEMO_MODE 9 | 10 | 11 | # Handle zip download 1.7 12 | displayStatusMessage() { 13 | local curl_error=$1 14 | 15 | case $curl_error in 16 | 1|3) 17 | Message="The URL was not properly formatted or the URL protocol is not supported (curlCode ${curl_error})." 18 | ;; 19 | 2|4) 20 | Message="This is likely to be an internal error or feature is not built-in (curlCode ${curl_error})." 21 | ;; 22 | 5|6|7) 23 | Message="Couldn't resolve host/proxy or failed to connect() to host/proxy (curlCode ${curl_error})." 24 | ;; 25 | *) 26 | Message="Error check man curl (curlCode ${curl_error})" 27 | ;; 28 | esac 29 | 30 | echo "${Message}" 31 | } 32 | 33 | installModule() { 34 | local moduleName=$1 35 | 36 | echo "\n* Installing module $moduleName ..." 37 | php bin/console prestashop:module install $moduleName 38 | php bin/console prestashop:module configure $moduleName 39 | } 40 | 41 | # Split id_module in list 42 | IFS=', ' read -r -a ID_MODULE_LIST <<< "$ID_MODULE" 43 | # Split module_name_toinstall in list 44 | IFS=', ' read -r -a MODULE_NAME_TOINSTALL_LIST <<< "$MODULE_NAME_TOINSTALL" 45 | 46 | for index in "${!ID_MODULE_LIST[@]}" 47 | do 48 | echo "\n* Requesting module ${ID_MODULE_LIST[index]} ..."; 49 | curl -u ${GET_USER} ${GET_FILE_MODULE}${ID_MODULE_LIST[index]} -L >> /var/www/html/modules/module.zip 50 | 51 | CMD_STATUS_CODE=$? 52 | if [ ${CMD_STATUS_CODE} != 0 ] 53 | then 54 | displayStatusMessage ${CMD_STATUS_CODE} 55 | else 56 | if [ ! -f /var/www/html/modules/module.zip ] || [ ! -s /var/www/html/modules/module.zip ] 57 | then 58 | echo "\n* Unable to download module ${ID_MODULE_LIST[index]} ..." 59 | else 60 | echo "\n* Unzipping the module ${ID_MODULE_LIST[index]} ..."; 61 | unzip -o -q /var/www/html/modules/module.zip -d /var/www/html/modules/ 62 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 63 | then 64 | MODULE_NAME=$(basename $( \ 65 | unzip -l modules/module.zip 2>&1 \ 66 | | grep -E '^\s+[0-9]+\s+[0-9-]+\s+[0-9:]+' \ 67 | | awk -F' ' '{print $4}'| head -1 68 | ) 69 | ) 70 | installModule ${MODULE_NAME} 71 | fi 72 | rm /var/www/html/modules/module.zip 73 | fi 74 | fi 75 | echo "\n" 76 | done 77 | 78 | # Module installation block 79 | # 80 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 81 | then 82 | echo "\n* Modules have already been installed [ All option ]" 83 | else 84 | for index in "${!MODULE_NAME_TOINSTALL_LIST[@]}" 85 | do 86 | if [ -d "modules/${MODULE_NAME_TOINSTALL_LIST[index]}" ] 87 | then 88 | installModule ${MODULE_NAME_TOINSTALL_LIST[index]} 89 | else 90 | echo "\n* module ${MODULE_NAME_TOINSTALL_LIST[index]} is not present on modules directory ..." 91 | fi 92 | done 93 | fi 94 | 95 | # Restore ENV variables 96 | export PS_DEV_MODE=${PS_DEV_MODE_ORIGIN} 97 | unset PS_DEV_MODE_ORIGIN 98 | export PS_DEMO_MODE=${PS_DEMO_MODE_ORIGIN} 99 | unset PS_DEMO_MODE_ORIGIN 100 | 101 | -------------------------------------------------------------------------------- /beta/config_files/get-module.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Unset ENV variables - conflict during Module installation 4 | # 5 | PS_DEV_MODE_ORIGIN=${PS_DEV_MODE} 6 | unset PS_DEV_MODE 7 | PS_DEMO_MODE_ORIGIN=${PS_DEMO_MODE} 8 | unset PS_DEMO_MODE 9 | 10 | 11 | # Handle zip download 1.7 12 | displayStatusMessage() { 13 | local curl_error=$1 14 | 15 | case $curl_error in 16 | 1|3) 17 | Message="The URL was not properly formatted or the URL protocol is not supported (curlCode ${curl_error})." 18 | ;; 19 | 2|4) 20 | Message="This is likely to be an internal error or feature is not built-in (curlCode ${curl_error})." 21 | ;; 22 | 5|6|7) 23 | Message="Couldn't resolve host/proxy or failed to connect() to host/proxy (curlCode ${curl_error})." 24 | ;; 25 | *) 26 | Message="Error check man curl (curlCode ${curl_error})" 27 | ;; 28 | esac 29 | 30 | echo "${Message}" 31 | } 32 | 33 | installModule() { 34 | local moduleName=$1 35 | 36 | echo "\n* Installing module $moduleName ..." 37 | php bin/console prestashop:module install $moduleName 38 | php bin/console prestashop:module configure $moduleName 39 | } 40 | 41 | # Split id_module in list 42 | IFS=', ' read -r -a ID_MODULE_LIST <<< "$ID_MODULE" 43 | # Split module_name_toinstall in list 44 | IFS=', ' read -r -a MODULE_NAME_TOINSTALL_LIST <<< "$MODULE_NAME_TOINSTALL" 45 | 46 | for index in "${!ID_MODULE_LIST[@]}" 47 | do 48 | echo "\n* Requesting module ${ID_MODULE_LIST[index]} ..."; 49 | curl -u ${GET_USER} ${GET_FILE_MODULE}${ID_MODULE_LIST[index]} -L >> /var/www/html/modules/module.zip 50 | 51 | CMD_STATUS_CODE=$? 52 | if [ ${CMD_STATUS_CODE} != 0 ] 53 | then 54 | displayStatusMessage ${CMD_STATUS_CODE} 55 | else 56 | if [ ! -f /var/www/html/modules/module.zip ] || [ ! -s /var/www/html/modules/module.zip ] 57 | then 58 | echo "\n* Unable to download module ${ID_MODULE_LIST[index]} ..." 59 | else 60 | echo "\n* Unzipping the module ${ID_MODULE_LIST[index]} ..."; 61 | unzip -o -q /var/www/html/modules/module.zip -d /var/www/html/modules/ 62 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 63 | then 64 | MODULE_NAME=$(basename $( \ 65 | unzip -l modules/module.zip 2>&1 \ 66 | | grep -E '^\s+[0-9]+\s+[0-9-]+\s+[0-9:]+' \ 67 | | awk -F' ' '{print $4}'| head -1 68 | ) 69 | ) 70 | installModule ${MODULE_NAME} 71 | fi 72 | rm /var/www/html/modules/module.zip 73 | fi 74 | fi 75 | echo "\n" 76 | done 77 | 78 | # Module installation block 79 | # 80 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 81 | then 82 | echo "\n* Modules have already been installed [ All option ]" 83 | else 84 | for index in "${!MODULE_NAME_TOINSTALL_LIST[@]}" 85 | do 86 | if [ -d "modules/${MODULE_NAME_TOINSTALL_LIST[index]}" ] 87 | then 88 | installModule ${MODULE_NAME_TOINSTALL_LIST[index]} 89 | else 90 | echo "\n* module ${MODULE_NAME_TOINSTALL_LIST[index]} is not present on modules directory ..." 91 | fi 92 | done 93 | fi 94 | 95 | # Restore ENV variables 96 | export PS_DEV_MODE=${PS_DEV_MODE_ORIGIN} 97 | unset PS_DEV_MODE_ORIGIN 98 | export PS_DEMO_MODE=${PS_DEMO_MODE_ORIGIN} 99 | unset PS_DEMO_MODE_ORIGIN 100 | 101 | -------------------------------------------------------------------------------- /nightly/config_files/get-module.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Unset ENV variables - conflict during Module installation 4 | # 5 | PS_DEV_MODE_ORIGIN=${PS_DEV_MODE} 6 | unset PS_DEV_MODE 7 | PS_DEMO_MODE_ORIGIN=${PS_DEMO_MODE} 8 | unset PS_DEMO_MODE 9 | 10 | 11 | # Handle zip download 1.7 12 | displayStatusMessage() { 13 | local curl_error=$1 14 | 15 | case $curl_error in 16 | 1|3) 17 | Message="The URL was not properly formatted or the URL protocol is not supported (curlCode ${curl_error})." 18 | ;; 19 | 2|4) 20 | Message="This is likely to be an internal error or feature is not built-in (curlCode ${curl_error})." 21 | ;; 22 | 5|6|7) 23 | Message="Couldn't resolve host/proxy or failed to connect() to host/proxy (curlCode ${curl_error})." 24 | ;; 25 | *) 26 | Message="Error check man curl (curlCode ${curl_error})" 27 | ;; 28 | esac 29 | 30 | echo "${Message}" 31 | } 32 | 33 | installModule() { 34 | local moduleName=$1 35 | 36 | echo "\n* Installing module $moduleName ..." 37 | php bin/console prestashop:module install $moduleName 38 | php bin/console prestashop:module configure $moduleName 39 | } 40 | 41 | # Split id_module in list 42 | IFS=', ' read -r -a ID_MODULE_LIST <<< "$ID_MODULE" 43 | # Split module_name_toinstall in list 44 | IFS=', ' read -r -a MODULE_NAME_TOINSTALL_LIST <<< "$MODULE_NAME_TOINSTALL" 45 | 46 | for index in "${!ID_MODULE_LIST[@]}" 47 | do 48 | echo "\n* Requesting module ${ID_MODULE_LIST[index]} ..."; 49 | curl -u ${GET_USER} ${GET_FILE_MODULE}${ID_MODULE_LIST[index]} -L >> /var/www/html/modules/module.zip 50 | 51 | CMD_STATUS_CODE=$? 52 | if [ ${CMD_STATUS_CODE} != 0 ] 53 | then 54 | displayStatusMessage ${CMD_STATUS_CODE} 55 | else 56 | if [ ! -f /var/www/html/modules/module.zip ] || [ ! -s /var/www/html/modules/module.zip ] 57 | then 58 | echo "\n* Unable to download module ${ID_MODULE_LIST[index]} ..." 59 | else 60 | echo "\n* Unzipping the module ${ID_MODULE_LIST[index]} ..."; 61 | unzip -o -q /var/www/html/modules/module.zip -d /var/www/html/modules/ 62 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 63 | then 64 | MODULE_NAME=$(basename $( \ 65 | unzip -l modules/module.zip 2>&1 \ 66 | | grep -E '^\s+[0-9]+\s+[0-9-]+\s+[0-9:]+' \ 67 | | awk -F' ' '{print $4}'| head -1 68 | ) 69 | ) 70 | installModule ${MODULE_NAME} 71 | fi 72 | rm /var/www/html/modules/module.zip 73 | fi 74 | fi 75 | echo "\n" 76 | done 77 | 78 | # Module installation block 79 | # 80 | if [ "$MODULE_NAME_TOINSTALL" == "ALL" ] 81 | then 82 | echo "\n* Modules have already been installed [ All option ]" 83 | else 84 | for index in "${!MODULE_NAME_TOINSTALL_LIST[@]}" 85 | do 86 | if [ -d "modules/${MODULE_NAME_TOINSTALL_LIST[index]}" ] 87 | then 88 | installModule ${MODULE_NAME_TOINSTALL_LIST[index]} 89 | else 90 | echo "\n* module ${MODULE_NAME_TOINSTALL_LIST[index]} is not present on modules directory ..." 91 | fi 92 | done 93 | fi 94 | 95 | # Restore ENV variables 96 | export PS_DEV_MODE=${PS_DEV_MODE_ORIGIN} 97 | unset PS_DEV_MODE_ORIGIN 98 | export PS_DEMO_MODE=${PS_DEMO_MODE_ORIGIN} 99 | unset PS_DEMO_MODE_ORIGIN 100 | 101 | --------------------------------------------------------------------------------