Docker Compose - 使用MySQLi,MySQLnd和PDO扩展安装php-fpm

时间:2017-09-17 11:40:41

标签: php docker docker-compose

我正在尝试在计算机(Mac)上设置docker,我无法编译PDO_mysql扩展。

我的docker-compose文件如下所示

version: '2'
  services:
    nginx:
        image: tutum/nginx
        ports:
            - "80:80"
        links:
            - phpfpm
        volumes:
            - ./nginx/conf:/etc/nginx/sites-available/
            - ./nginx/conf:/etc/nginx/sites-enabled/

            - ./logs/nginx-error.log:/var/log/nginx/error.log
            - ./logs/nginx-access.log:/var/log/nginx/access.log
    phpfpm:
        build: ./php
        ports:
            - "9000:9000"
        volumes:
            - ./Sites:/usr/share/nginx/html
    mysql:
      image: mysql
      environment:
        MYSQL_ROOT_PASSWORD: admin
      ports:
        - "3306:3306" 

我的Dockfile如下所示:

FROM php:5.6-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
    && docker-php-ext-install -j$(nproc) iconv mcrypt mysqli \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd 

以上文件工作正常,但如果在第3个最后一个文件中,如果我添加 mysqlnd 我无法构建我的php。

            Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/
            Installing header files:           /usr/local/include/php/
            find . -name \*.gcno -o -name \*.gcda | xargs rm -f
            find . -name \*.lo -o -name \*.o | xargs rm -f
            find . -name \*.la -o -name \*.a | xargs rm -f 
            find . -name \*.so | xargs rm -f
            find . -name .libs -a -type d|xargs rm -rf
            rm -f libphp.la       modules/* libs/*
            + cd mysqlnd
            + phpize
            Cannot find config.m4. 
            Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module

            ERROR: Service 'phpfpm' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y       libfreetype6-dev        libjpeg62-turbo-dev         libmcrypt-dev       libpng12-dev    && docker-php-ext-install -j$(nproc) iconv mcrypt mysqli mysqlnd    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/  && docker-php-ext-install -j$(nproc) gd' returned a non-zero code: 1

我做错了什么?

请指教。

由于

3 个答案:

答案 0 :(得分:2)

我刚丢弃了 tutum 图片并使用了 Quay.io 图片

image: quay.io/ignited/php-nginx-fpm:5.6.30-latest

这一行为我创造了奇迹。 我得到了php-fpm,其中包含通常预先安装在托管服务器上的所有必需库。

我希望它可以帮助任何浪费了几天的人试图找出答案。

答案 1 :(得分:0)

我建议您在Dockerfile中添加以下行:

RUN apt-get install -y libbz2-dev \
    && docker-php-ext-install bz2

答案 2 :(得分:0)

我认为在phpfpm容器上使用mysql你只需要将这个mysql容器链接到它们。

phpfpm:
        build: ./php
        links:
            - mysql 
        ports:
            - "9000:9000"
        volumes:
            - ./Sites:/usr/share/nginx/html

如果您需要工作示例,请在github上查看我的docker-compose。

https://github.com/Arkowsky/docker_symfony/blob/master/docker-compose.yml

如果你决定在mac和docker上使用symfony,你可能会遇到性能问题 - 我在github上面的存储库中对此进行了描述。

有任何问题,请告诉我。