2017-04-25 34 views
2

我試圖創建我的第一張圖像,我從別人那裏分出來,並且遇到構建失敗的問題。貌似錯誤是在這裏Docker PHP和FreeTDS - 無法在知道的安裝目錄中找到freetds

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

泊塢文件

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 30年6月5日。我怎樣才能看到freetds安裝?

回答

4

您需要考慮相關軟件包的正確安裝順序。目前您的RUN命令安裝freetds-{bin,dev}docker-php-ext-install pdo pdo_mysql pdo_dblib pdo_pgsql命令。如果您轉過安裝步驟的順序,則會找到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找到):通過您的Dockerfile工作時可能出現

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

類似的問題。

對於開發,我建議將巨大的RUN命令拆分爲幾個專用的RUN命令,以便您不必一遍又一遍地執行每一步。當你確信Dockerfile可以工作時,你可以將這些命令重新加入到一個RUN命令中。

+1

對我來說,這是我需要鏈接的「so」文件,如下所示:'ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so/usr/lib /' –