2017-04-25 11 views
2

私は他の人からフォークした最初のイメージを作成しようとしています。エラーはイメージがPHP 5.6.30を使用しているDocker PHPとFreeTDS - 既知のインストールディレクトリでフリーセットを見つけることができません

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 

ファイルドッカー

ここ

[91mconfigure: error: Cannot find FreeTDS in known installation directories 
[0m 
no 
checking for PDO_DBLIB support via FreeTDS... yes, shared 
であるように見えます。フリーセットのインストールを見るには、どうしたらいいですか?

答えて

4

依存パッケージの正しいインストール順序を考慮する必要があります。現在、RUNコマンドは の後に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からこのような問題の解決策を見つけることができます。その特殊なケースではあなただけ(https://github.com/phpbrew/phpbrew/issues/643#issuecomment-165447722で発見)あなたRUNコマンドの一部としてシンボリックリンクを追加する必要があります:あなたのDockerfileを通じて作業中

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

同様の問題が発生する可能性があります。

開発のために、巨大なRUNコマンドをいくつかの専用のRUNコマンドに分割することをお勧めします。これにより、すべてのステップを何度も何度も実行する必要がなくなります。 Dockerfileが機能していると確信できたら、コマンドを単一のRUNコマンドに戻すことができます。

+1

私のために、私はリンクしなければならなかった "ソ"ファイルでした: 'ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so/usr/lib /' –

関連する問題