Docker PHP和FreeTDS – 在知道的安装目录下找不到freetds

我试图创build我的第一个图像,我从别人那里分手,而且我遇到了构build失败的问题。 看起来错误在这里

[91mconfigure: error: Cannot find FreeTDS in known installation directories [0m no checking for PDO_DBLIB support via FreeTDS... yes, shared 

Docker文件

 FROM php:5.6.30-apache ENV DOWNLOAD_URL https://www.limesurvey.org/stable-release?download=2044:limesurvey2647%20170404targz #php extensions RUN docker-php-ext-install pdo pdo_mysql pdo_dblib pdo_pgsql \ && apt-get update && apt-get install -y \ freetds-bin \ freetds-dev \ freetds-common \ libct4 \ libsybdb5 \ tdsodbc \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng12-dev \ libldap2-dev \ zlib1g-dev \ libc-client-dev \ libkrb5-dev \ && docker-php-ext-install -j$(nproc) iconv mcrypt \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu \ && docker-php-ext-install ldap \ && docker-php-ext-install zip \ && docker-php-ext-configure imap --with-imap-ssl --with-kerberos \ && docker-php-ext-install imap \ && rm -rf /var/lib/apt/lists/* \ #Download and install LimeSurvey && curl -SL "$DOWNLOAD_URL" -o /tmp/lime.tar.gz \ && tar xf /tmp/lime.tar.gz limesurvey --strip-components=1 -C /var/www/html \ && chown -R www-data:www-data /var/www/html \ && rm -f /tmp/lime.tar.gz \ && chmod -R 755 /var/www/html/tmp \ && chmod -R 755 /var/www/html/upload \ && chmod -R 755 /var/www/html/application/config \ && mkdir -p /var/lib/php5 \ && chown www-data:www-data /var/lib/php5 

该图像使用PHP 5.6.30。 我怎样才能看到freetds安装?

您需要考虑相关软件包的正确安装顺序。 目前,您的RUN命令将在freetds-{bin,dev} docker-php-ext-install pdo pdo_mysql pdo_dblib pdo_pgsql命令之后安装freetds-{bin,dev} 。 如果您绕过安装步骤的顺序,freetds文件将被find。 示例代码片段:

 RUN apt-get update && apt-get install -y \ freetds-bin \ freetds-dev \ freetds-common \ libct4 \ libsybdb5 \ tdsodbc \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng12-dev \ libldap2-dev \ zlib1g-dev \ libc-client-dev \ ... && docker-php-ext-install pdo pdo_mysql pdo_dblib pdo_pgsql \ ... 

虽然这还不够。 我得到了以下错误:

 configure: error: Could not find /usr/lib/libsybdb.a|so 

您可以通过Googlefind解决此类问题的解决scheme。 在这种特殊情况下,您只需要添加一个符号链接作为RUN命令的一部分(可在https://github.com/phpbrew/phpbrew/issues/643#issuecomment-165447722find):

 ln -s /path/to/your/libsybdb.a /usr/lib/ 

在处理Dockerfile时可能会出现类似的问题。

对于开发,我build议将巨大的RUN命令分成几个专用的RUN命令,这样就不必一遍又一遍地执行每一步。 如果您确信Dockerfile可以工作,则可以将这些命令重新join到单个RUN命令中。