【问题标题】:How to set prestashop database server from docker-compose?如何从 docker-compose 设置 prestashop 数据库服务器?
【发布时间】:2021-01-04 23:48:44
【问题描述】:

我正在将我的 prestashop 安装移动到 docker 容器。我在 Ubuntu 上有一个带有 prestashop、mariadb 和 phpmyadmin 的容器。我已经按照这里的建议设置了环境变量:https://githubmemory.com/repo/PrestaShop/docker。这是我的docker-compose

version: "2"
services:
    prestashop:
        image: prestashop/prestashop
        networks:
            mycustomnetwork:
        ports:
            - 82:80
        links:
            - mariadb:mariadb
        depends_on:
            - mariadb
        volumes:
            - ./src:/var/www/html
            - ./src/modules:/var/www/html/modules
            - ./src/themes:/var/www/html/themes
            - ./src/override:/var/www/html/override
        environment:
            - PS_DEV_MODE=1
            - DB_SERVER=mariadb
            - DB_USER=user_8
            - DB_PASSWD=password_8
            - DB_NAME=db_8
            - PS_INSTALL_AUTO=0

    mariadb:
        image: mariadb
        networks:
            mycustomnetwork:
        volumes:
            - db_data:/docker-entrypoint-initdb.d
        environment:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_DATABASE=db_8
            - MYSQL_USER=user_8
            - MYSQL_PASSWORD=password_8

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        networks:
            mycustomnetwork:
        links:
            - mariadb:mariadb
        ports:
            - 1235:80
        depends_on:
            - mariadb
        environment:
            - PMA_HOST=mariadb
            - PMA_USER=user_8
            - PMA_PASSWORD=password_8

volumes:
    db_data:

networks:
    mycustomnetwork:

数据库工作正常,我可以通过 phpmyadmin 连接到它。但是在 prestashop 日志中我收到此错误:

Link to database cannot be established: SQLSTATE[HY000] [2002] No such file or directory at line 127 in file classes/db/DbPDO.php

我修改了代码,它抛出了这个错误,所以它打印了它用来尝试建立连接的变量 ($this->server, $this->user, $this->password, $this->database),我得到了这个:localhost user password db。这些值来自app/config/parameters.php,而不是我在docker-compose 中设置的环境变量。我应该怎么做才能使用我在docker-compose 中提供的值而不是来自parameters.php 的值?

【问题讨论】:

    标签: php docker docker-compose mariadb prestashop


    【解决方案1】:

    我认为 Prestashop 在解析环境变量之前正在读取 app/config/parameters.phhp 文件。 要绕过这个,你应该强制 PShop 从环境变量中读取 conf。 使用getenv(<ENV_NAME>)

    'database_host' => getenv('DB_SERVER')

    【讨论】:

      猜你喜欢
      • 2016-04-17
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 2020-03-16
      • 2022-01-23
      • 2019-04-23
      • 2022-08-24
      • 2017-12-29
      相关资源
      最近更新 更多