为什么在docker容器中安装PHP时没有php.ini文件?

skb*_*skb 5 php5 php.ini php-fpm docker docker-compose

我正在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"
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后我有最基本的index.php可能:

<?php
echo phpinfo();
Run Code Online (Sandbox Code Playgroud)

如果没有必要,我真的不想从头开始。php:5-fpmdocker 映像中是否应该包含一个 php.ini 文件?如果没有,是否有我可以用来开始的通用文件?

小智 3

您需要添加 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 文件提取到配置目录。例子:

compose_root/php/php.ini-development

  1. 在 php 容器中使用 php.ini 添加卷

    卷:

    • .root:/var/www/html:ro
    • ./php/php.ini-开发:/usr/local/etc/php/php.ini