web-dev-qa-db-ja.com

DockerコンテナにPHP)をインストールするときにphp.iniファイルがないのはなぜですか?

_docker-compose_を使用して最小限のnginx + _php-fpm_アプリケーションをセットアップしていますが、何らかの理由でDockerコンテナにphp.iniファイルがありません(phpinfo()Loaded Configuration File: (none))と言います。

これが私の_docker-compose.yml_ファイルです。

_web:
  image: nginx
  ports:
    - "8080:80"
  volumes:
    - ./site.conf:/etc/nginx/conf.d/site.conf
  links:
    - php

php:
  image: php:5-fpm
  volumes:
    - .root:/var/www/html:ro
  command: bash -c "apt-get update && apt-get install -y php5-mysql && php-fpm"
_

_site.conf_も非常に簡単です。

_server {
    index index.php;
    server_name local.myspicesage.com;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
_

そして最後に、最も基本的な_index.php_を用意しました。

_<?php
echo phpinfo();
_

必要がない場合は、最初からやり直したくありません。 _php:5-fpm_ Dockerイメージに含まれるphp.iniファイルがあるはずですか?そうでない場合、最初に使用できる一般的なファイルはありますか?

4
skb

Php.iniファイルを追加する必要があります。

  1. 一時的なphpコンテナを実行する

docker run -d --name php-tmp php:5-fpm

  1. PHPアーカイブをコピー

docker cp php-tmp:/usr/src/php.tar.xz。

  1. Php.ini-developmentまたはphp.ini-productionファイルをconfig dirに抽出します。例:

compose_root/php/php.ini-development

  1. Phpコンテナーのphp.iniでボリュームを追加します

    ボリューム:

    • .root:/ var/www/html:ro
    • ./php/php.ini-development:/usr/local/etc/php/php.ini
3
Alexander

コンテナには_/usr/local/etc/php/conf.d_もあり、そのディレクトリ内のすべての構成ファイルを読み取って解析します。

まだLoaded Configuration File => (none)と表示されますが、alsoは_Additional .ini files parsed_と表示されることに注意してください。そのディレクトリを歩いていると、さまざまなファイルが表示されます。コンテナはそこに置きます:_docker-php-ext-XXX.ini_。 (つまり、_(none)_ ...)と言っても誤解を招きやすいです

次のようなことをすると便利です:

_ php -r 'phpinfo();' | grep -i conf
_

...この場合、PHPの大量の出力で、文字列confを(大文字または小文字で)含む行のみが非常にすばやく表示されます。

1
Mike Robinson