首页 > 解决方案 > 使用 docker-compose 配置 Prestashop Web 服务

问题描述

我正在尝试通过使用 docker 容器来简化 Prestashop 的安装。我的问题是容器在加载后必须准备好 API,但我找不到从 docker-compose 启用此功能的方法。

我要完成的工作:

  1. 启用 Prestashop 的 Web 服务
  2. 创建网络服务密钥
  3. 为 Web 服务创建权限
  4. 能够从 Postman 修改产品、客户、地址等

到目前为止我做过的事情:

services:
    prestashopper:
        image: prestashop/prestashop
        ports:
            - 8080:80
        environment:
            - PS_LANGUAGE=en
            - PS_COUNTRY=CO
            - PS_FOLDER_ADMIN=admin_folder_name
            - PS_FOLDER_INSTALL=install_folder_name
            - PS_INSTALL_AUTO=1
            - PS_DOMAIN=localhost:8080
            - PS_WEBSERVICE=1
        command:
            [
            #     php -r 'Configuration::updateValue('PS_WEBSERVICE', 1);'
            #     php -r '$$apiAccess = new WebserviceKey();',
            #     php -r '$$apiAccess->key = GENERATED_KEY;',
            #     php -r '$$apiAccess->save();',
            ]

我的研究告诉我:

根据 PrestaShop 网站上的文档,这些命令可以使用 PHP 完成,但是,我无法确定如何从 docker-compose 设置中正确运行这些 PHP 命令

也可以从 docker-compose 修改以下内容

标签: phpdockerdocker-composeprestashop

解决方案


您需要在容器或挂载卷中使用专用 PHP 脚本来引导 Prestashop 框架(包括/init.php/config/config.inc.php),以便之后启动这些 Prestashop 核心命令。

您可以在cointaner启动后使用 docker exec 执行它:

docker exec -it -w $PWD php_worker php /home/my_post_install_script.php

关于修改货币选项,请查看classes/Currency.php,所有与 Currency 对象交互的方法。

关于更新商店主要活动,这是配置表中的PS_SHOP_ACTIVITY键,所以

Configuration::updateValue(PS_SHOP_ACTIVITY, your_id) 

会成功的。您可以在后台下拉列表中找到各种选项值。


推荐阅读