将 mbstring 添加到 laravel 5 应用程序的 docker 图像

Sam*_*ner 4 php mbstring laravel docker laravel-5

我是 docker 的新手,我正在尝试设置它以便与 Laravel 5.1 一起运行。我目前收到以下错误

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

我相信这是因为mbstring没有安装 php 扩展。我试图添加php-mbstring到 Docker 文件,但它似乎不起作用。

这是我的完整 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 
Run Code Online (Sandbox Code Playgroud)

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

编辑:我在下面包含了 docker-compose.yml 文件

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:
Run Code Online (Sandbox Code Playgroud)

小智 6

删除php-前缀,它应该可以正常工作。您还可以在上一个docker-php-ext-install命令上运行它:

docker-php-ext-install mcrypt pdo_mysql mbstring