2017-09-28 430 views
0

我正在建立一个自定义的mdocker映像,基于(从)php:7.0-fpm-alpine图像和我需要安装MongoDB的extention所以我Dockerfile有以下内容安装mongodb pecl软件包的问题:/ tmp/pear/temp/mongodb/configure:./configure.lineno:line 1:syntax error:unterminated quoted string

FROM php:7.0-fpm-alpine 
MAINTAINER John Doe <[email protected]>  

RUN apk update &&\ 
    apk add --update --virtual build_deps gcc g++ autoconf make openssl-dev pcre-dev &&\ 
    docker-php-source extract &&\ 
    pecl install mongodb && \ 
    docker-php-ext-enable mongodb && \ 
    docker-php-source delete && \ 
    apk del build_deps autoconf gcc g++ make && \ 
    rm -rf /var/cache/apk/* && \ 
    rm -rf /tmp/* 

但是当我建立了下面的图片上面我得到下面的输出(从高山包输出将安装已中省略):

downloading mongodb-1.3.0.tgz ... 
Starting to download mongodb-1.3.0.tgz (927,842 bytes) 
.........................................................................................................................................................................................done: 927,842 bytes 
417 source files, building 
running: phpize 
Configuring for: 
PHP Api Version:   20151012 
Zend Module Api No:  20151012 
Zend Extension Api No: 320151012 
building in /tmp/pear/temp/pear-build-defaultuserfgCbfi/mongodb-1.3.0 
running: /tmp/pear/temp/mongodb/configure --with-php-config=/usr/local/bin/php-config 
checking for grep that handles long lines and -e... /bin/grep 
checking for egrep... /bin/grep -E 
checking for a sed that does not truncate output... /bin/sed 
expr: syntax error 
sh: 0: unknown operand 
expr: syntax error 
sh: 0: unknown operand 
checking for cc... cc 
checking whether the C compiler works... yes 
checking for C compiler default output file name... a.out 
checking for suffix of executables... 
checking whether we are cross compiling... no 
checking for suffix of object files... o 
checking whether we are using the GNU C compiler... yes 
checking whether cc accepts -g... yes 
checking for cc option to accept ISO C89... none needed 
checking how to run the C preprocessor... cc -E 
checking for icc... no 
checking for suncc... no 
checking whether cc understands -c and -o together... yes 
checking for system library directory... lib 
checking if compiler supports -R... no 
checking if compiler supports -Wl,-rpath,... yes 
checking build system type... x86_64-unknown-linux-gnu 
checking host system type... x86_64-unknown-linux-gnu 
checking target system type... x86_64-unknown-linux-gnu 
checking for PHP prefix... /usr/local 
checking for PHP includes... -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib 
checking for PHP extension directory... /usr/local/lib/php/extensions/no-debug-non-zts-20151012 
checking for PHP installed headers prefix... /usr/local/include/php 
checking if debug is enabled... no 
checking if zts is enabled... no 
checking for re2c... no 
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. 
checking for gawk... no 
checking for nawk... no 
checking for awk... awk 
checking if awk is broken... no 
checking whether to enable mongodb support... yes, shared 
checking OpenSSL dir for mongodb... yes 
checking whether to use system default cipher list instead of hardcoded value... no 
checking PHP version... 70022 
/tmp/pear/temp/mongodb/configure: ./configure.lineno: line 1: syntax error: unterminated quoted string 
ERROR: `/tmp/pear/temp/mongodb/configure --with-php-config=/usr/local/bin/php-config' failed 
Removing intermediate container 288e5589f2ca 

正如你可以看到我得到以下错误:

/tmp/pear/temp/mongodb/configure: ./configure.lineno: line 1: syntax error: unterminated quoted string 

那么你们有一个想法如何解决这个问题吗?

+1

这是一个新引入的错误,有一票打开网址为:https:// JIRA。 mongodb.org/browse/PHPC-1014 – olvlvl

回答

2

你的问题是,谁写了mongodb pecl脚本在bash上测试它,而不是sh。所以这个脚本与sh不兼容。解决方法很简单,运行它通过庆典

FROM php:7.0-fpm-alpine 
MAINTAINER John Doe <[email protected]> 

RUN apk update &&\ 
    apk add --update --virtual build_deps bash gcc g++ autoconf make openssl-dev pcre-dev &&\ 
    docker-php-source extract &&\ 
    /bin/bash -lc "pecl install mongodb" && \ 
    docker-php-ext-enable mongodb && \ 
    docker-php-source delete && \ 
    apk del build_deps && \ 
    rm -rf /var/cache/apk/* && \ 
    rm -rf /tmp/* 

也为apk del你只需要给虚拟包命名