Docker PHP 和 FreeTDS - 在已知安装目录中找不到 freetds
Docker PHP and FreeTDS -cannot find freetds in know installation directories
我正在尝试创建我的第一张图片,这是我从其他人那里分叉出来的,但我 运行 遇到了构建失败的问题。看起来错误在这里
[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
命令在 docker-php-ext-install pdo pdo_mysql pdo_dblib pdo_pgsql
命令 之后安装 freetds-{bin,dev}
。如果您颠倒安装步骤的顺序,就会找到 freetds 文件。示例片段:
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
您可以通过 Google 找到此类问题的解决方案。在这种特殊情况下,您只需添加一个符号链接作为 RUN
命令的一部分(位于 https://github.com/phpbrew/phpbrew/issues/643#issuecomment-165447722):
ln -s /path/to/your/libsybdb.a /usr/lib/
处理 Dockerfile 时可能会出现类似问题。
对于开发,我建议将巨大的 RUN
命令拆分为几个专用的 RUN
命令,这样您就不必一遍又一遍地执行每个步骤。当您确信 Dockerfile 有效时,您可以将这些命令重新加入到单个 RUN
命令中。
我正在尝试创建我的第一张图片,这是我从其他人那里分叉出来的,但我 运行 遇到了构建失败的问题。看起来错误在这里
[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
命令在 docker-php-ext-install pdo pdo_mysql pdo_dblib pdo_pgsql
命令 之后安装 freetds-{bin,dev}
。如果您颠倒安装步骤的顺序,就会找到 freetds 文件。示例片段:
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
您可以通过 Google 找到此类问题的解决方案。在这种特殊情况下,您只需添加一个符号链接作为 RUN
命令的一部分(位于 https://github.com/phpbrew/phpbrew/issues/643#issuecomment-165447722):
ln -s /path/to/your/libsybdb.a /usr/lib/
处理 Dockerfile 时可能会出现类似问题。
对于开发,我建议将巨大的 RUN
命令拆分为几个专用的 RUN
命令,这样您就不必一遍又一遍地执行每个步骤。当您确信 Dockerfile 有效时,您可以将这些命令重新加入到单个 RUN
命令中。