2017-12-27 8 views
1

3週間前から私が使用していた画像php5.6 + apacheが、私が作成したDockerfileを使って作成しました。Dockerfile - RUN apt-get install -y php5-MODULESがもう動作しません - 「インストール候補はありません」。どのようにそれを解決するには?

私はこのbase imageを使って画像を開始しています。 今日まで、php.ini内のいくつかの変数を変更する必要があるときまで、すべてがうまくいっていました。

私は再び画像を構築しようとすると、今、私はこのエラーを取得しています:

Step 5/173 : RUN apt-get install -y php5-common 
---> Running in 8114082e9931 
Reading package lists... 
Building dependency tree... 
Reading state information... 
Package php5-common is not available, but is referred to by another package. 
This may mean that the package is missing, has been obsoleted, or 
is only available from another source 

E: Package 'php5-common' has no installation candidate 
The command '/bin/sh -c apt-get install -y php5-common' returned a non-zero code: 100 

私がインストールしようとする各PHPモジュールのために起こっているようです。 3週間前に働いていたすべてのモジュールの

FROM php:5-apache 

## Update apt-get 
RUN apt-get update 

RUN php -m  
RUN php -v 


RUN apt-get install -y php5-common 
RUN apt-get install -y php-calendar 
RUN docker-php-ext-install bcmath 
RUN apt-get install -y php5-mhash 
RUN apt-get install -y php5-intl 
RUN cp /etc/php5/mods-available/intl.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/intl.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/intl.so 
RUN apt-get install -y php5-mcrypt 
RUN cp /etc/php5/mods-available/mcrypt.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/mcrypt.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/mcrypt.so 
RUN apt-get install -y php5-redis 
RUN cp /etc/php5/mods-available/redis.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/redis.so 
RUN apt-get install -y php5-mysql 
RUN cp /etc/php5/mods-available/mysql.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/mysql.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/mysql.so 
RUN cp /etc/php5/mods-available/opcache.ini /usr/local/etc/php/conf.d 
RUN apt-get install -y php5-gd 
RUN cp /etc/php5/mods-available/gd.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/gd.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/gd.so 
RUN apt-get install -y php5-gdcm 
RUN cp /etc/php5/mods-available/gdcm.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/gdcm.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/gdcm.so 
RUN apt-get install -y php5-vtkgdcm 
RUN cp /etc/php5/mods-available/vtkgdcm.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/vtkgdcm.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/vtkgdcm.so 
RUN apt-get install -y php5-ldap 
RUN cp /etc/php5/mods-available/ldap.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/ldap.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/ldap.so 
RUN apt-get install -y php5-xsl 
RUN cp /etc/php5/mods-available/xsl.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/xsl.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xsl.so 
RUN apt-get install -y php5-tidy 
RUN cp /etc/php5/mods-available/tidy.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/tidy.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/tidy.so 
RUN apt-get install -y php5-xmlrpc 
RUN cp /etc/php5/mods-available/xmlrpc.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/xmlrpc.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xmlrpc.so 
RUN apt-get install -y php5-pgsql 
RUN cp /etc/php5/mods-available/pgsql.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/pgsql.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/pgsql.so 
RUN cp /etc/php5/mods-available/mysqli.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/mysqli.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/mysqli.so 
RUN cp /etc/php5/mods-available/pdo.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/pdo.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo.so 
RUN cp /etc/php5/mods-available/pdo_mysql.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/pdo_mysql.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so 
RUN cp /etc/php5/mods-available/pdo_pgsql.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/pdo_pgsql.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_pgsql.so 
RUN cp /etc/php5/mods-available/readline.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/readline.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/readline.so 

#COPYING__php.ini 
RUN cp /etc/php5/cli/php.ini /usr/local/etc/php/ 
RUN ls -l /usr/local/etc/ 


## Setting up php.ini varaibles 
RUN grep '^post_max_size' /usr/local/etc/php/php.ini 
RUN sed -i 's,^post_max_size =.*$,post_max_size = 2048M,' /usr/local/etc/php/php.ini 
RUN grep '^post_max_size' /usr/local/etc/php/php.ini 

RUN grep '^upload_max_filesize' /usr/local/etc/php/php.ini 
RUN sed -i 's,^upload_max_filesize =.*$,upload_max_filesize = 2048M,' /usr/local/etc/php/php.ini 
RUN grep '^upload_max_filesize' /usr/local/etc/php/php.ini 

... 

基本的にhas no installation candidateエラー:ここ

はDockerfileの一部です。

どうすれば解決できますか?

UPDATEは問題が公式のPHPコンテナイメージが、これは簡単にするためにヘルパーが付属しています。このPOST

+0

あなたの 'apt-get update 'をインストールしようとすると忘れてしまうので、あなたのRUNをグループ化してください – user2915097

答えて

1

参照従ってください。これらの例はthe PHP repository on Dockerから直接得られます。

コア拡張機能をインストールするにはmcyrptあなたDockerfileに以下を追加します。

RUN docker-php-ext-install -j$(nproc) mcrypt 

いくつかの拡張機能は、(あなたがコンテナを構築する際に拡張子がコンパイルされているため)ライブラリがシステム上に存在する必要があります。この例では、すべてのコマンドがまとめられているので、にはがそれぞれRUNとして発行されます。 PECL拡張のために

RUN apt-get update && apt-get install -y libfreetype6-dev \ 
     libjpeg62-turbo-dev \ 
     libmcrypt-dev \ 
     libpng-dev 
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ 
    && docker-php-ext-install -j$(nproc) gd 

、あなたはpecl installをインストールし、適切な.iniファイル(複数可)を追加するためにdocker-php-ext-enableを使用して処理させるよmemcachedredis様または。上記のgdの例と異なり、一部のPECL拡張には独自の依存関係があるため、インストールする前にapt-get install -y ...を追加してください。それをすべて一緒ストリンギング

RUN pecl install redis-3.1.0 && docker-php-ext-enable redis 

、それはgdredismcryptを追加するには、このようになります。

FROM php:5-apache 

RUN apt-get update && apt-get install -y libfreetype6-dev \ 
     libjpeg62-turbo-dev \ 
     libmcrypt-dev \ 
     libpng-dev 
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ 
    && docker-php-ext-install -j$(nproc) gd 
RUN docker-php-ext-install -j$(nproc) mcrypt 
RUN pecl install redis-3.1.0 && docker-php-ext-enable redis 

RUN php -m 
0

あなたはDockerfileあなたにlinkを提供見れば、それはこれらの行を持っている:PHPパッケージのPin-Priorityため-1

# prevent Debian's PHP packages from being installed 
# https://github.com/docker-library/php/pull/542 
RUN set -eux; \ 
    { \ 
     echo 'Package: php*'; \ 
     echo 'Pin: release *'; \ 
     echo 'Pin-Priority: -1'; \ 
    } > /etc/apt/preferences.d/no-debian-php 

好みはこれらのパッケージをインストールしていないシステムを語っています。 プルリクエストで理由が説明されていますhttps://github.com/docker-library/php/pull/542

問題を解決するには、組み込みのdocker-php-ext-installコマンドを使用してPHPパッケージをインストールする方法を使用する必要があります。以下はその公式ページの例ですhttps://hub.docker.com/_/php/

FROM php:5-apache 

RUN apt-get update && apt-get install -y \ 
     libfreetype6-dev \ 
     libjpeg62-turbo-dev \ 
     libmcrypt-dev \ 
     libpng-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 

幸運です。

関連する問題