2017-05-26 47 views
1

我是新来的docker,我试图设置它以便与Laravel 5.1一起运行。我目前收到以下错误将mbstring添加到docker image for laravel 5应用程序

Call to undefined function Illuminate\Foundation\Bootstrap\mb_internal_encoding() in /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php:43 

我相信这是因为没有安装PHP mbstring推广。我试图将php-mbstring添加到Docker文件,但它似乎并没有工作。

这里是我的全部泊坞文件

FROM php:5.6.30-fpm 

    RUN apt-get update && apt-get install -y libmcrypt-dev \ 
     mysql-client libmagickwand-dev --no-install-recommends \ 
     && pecl install imagick \ 
     && docker-php-ext-install mcrypt pdo_mysql \ 
     && docker-php-ext-install php-mbstring 

我然后运行从应用程序文件夹sudo docker compose up。这似乎并没有解决这个错误。我如何知道扩展是否正确安装?

编辑:我已经包括以下

version: '2' 
services: 

    # The Application 
    app: 
    build: 
     context: ./ 
     dockerfile: app.dockerfile 
    working_dir: /var/www 
    volumes: 
     - ./:/var/www 
    environment: 
     - "DB_PORT=3306" 
     - "DB_HOST=database" 

    # The Web Server 
    web: 
    build: 
     context: ./ 
     dockerfile: web.dockerfile 
    working_dir: /var/www 
    volumes_from: 
     - app 
    ports: 
     - 8080:80 

    # The Database 
    database: 
    image: mysql:5.6 
    volumes: 
     - dbdata:/var/lib/mysql 
    environment: 
     - "MYSQL_DATABASE=homestead" 
     - "MYSQL_USER=homestead" 
     - "MYSQL_PASSWORD=secret" 
     - "MYSQL_ROOT_PASSWORD=secret" 
    ports: 
     - "33061:3306" 

volumes: 
    dbdata: 

回答

0

泊坞窗,compose.yml文件中删除php-前缀,它应该工作的罚款。您也可以在以前的docker-php-ext-install命令运行它:

docker-php-ext-install mcrypt pdo_mysql mbstring

+0

感谢您的回复。我试图删除php-并仍然得到相同的错误。关于在以前的'docker-php-ext-install'上运行的很棒的提示。 – SamBremner

+0

奇数。你可以在你的问题上发布你的docker-composer.yml,以便我们可以尝试重新创建这个问题? :) –

+0

我已经将docker-compose.yml文件添加到我的问题中。当你有机会时请看看。谢谢。 – SamBremner

0

在Ubuntu PHP-MBSTRING与PHP常见和版本像php7.1-mbstring的具体mbstring的依赖可能导致的问题。您可以使用下面的命令检查依赖关系;

apt-cache depends php-mbstring 
+0

感谢您的回复,我试图从docker中使用命令'sudo docker exec -it 81a8f6eea495 apt-cache depends php-mbstring'来查找依赖关系,但它只是返回'未找到包“。我也尝试在Docker文件中添加common和php-common,但我仍然得到相同的错误。 – SamBremner