Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker php:7.1-ApacheDon';无法加载http_请求2_Php_Dockerfile_Http Request2 - Fatal编程技术网

docker php:7.1-ApacheDon';无法加载http_请求2

docker php:7.1-ApacheDon';无法加载http_请求2,php,dockerfile,http-request2,Php,Dockerfile,Http Request2,首先,我想告诉大家我是docker的不速之客。 我正在尝试使用docker在我的机器上安装一个虚拟化的Apache。 这是我的文件 这是我的docker-compose.yml 但是当我尝试导入phphttp_request2库时,我得到了这个错误 警告:require_once(HTTP/Request2.php):无法打开流:第4行的/var/www/html/dadilib/get_data.php中没有这样的文件或目录 我错在哪里?我没有在文件中定义什么 谢谢 Stefano G您可能需

首先,我想告诉大家我是docker的不速之客。
我正在尝试使用docker在我的机器上安装一个虚拟化的Apache
这是我的文件

这是我的docker-compose.yml

但是当我尝试导入phphttp_request2库时,我得到了这个错误

警告:require_once(HTTP/Request2.php):无法打开流:第4行的/var/www/html/dadilib/get_data.php中没有这样的文件或目录

我错在哪里?我没有在文件中定义什么

谢谢


Stefano G

您可能需要更深入地回到docker的基本概念。不知道你从哪里学到的,但我建议你在youtube上“那个devops家伙”:

有关PHP生态系统的更多信息,请查看

在您的情况下,您需要首先了解docker,然后再编写docker。 在docker方面,您有一个“图像”的概念,它描述了如何创建“容器”。将该图像视为一种食谱,当docker运行该图像时,您将得到一顿饭(一个容器)

在本例中,您希望将pecl的http请求库添加到
phpstorm/php-71-apache-xdebug-26
,因此需要在现有映像上执行更多指令。这就是
Dockerfile
docker build
FROM
的作用所在

FROM phpstorm/php-71-apache-xdebug-26

# ...
完成此操作后,构建完成,您可以运行一个容器,该容器具有基本映像的所有功能(来自您的定制)

是时候让docker撰写
。Docker compose正在为您执行编排部分,这意味着它将只按正确的顺序执行许多Docker命令,而不必自己键入所有命令

version: "3.8"

services:
  my-first-service:
    image: phpstorm/php-71-apache-xdebug-26
  my-second-service:
    build:
      context: .
      dockerfile: Dockerfile
在上面的
docker compose.yml
中,我描述了两个服务。 docker compose在执行
up
时将执行以下操作:

  • 创建网络*\默认值(docker网络创建)
  • docker拉我第一次服务的图像
  • 运行一个容器*_my-first-service_1(docker运行)
  • 执行
    docker构建-t*\u my-second-service-f Dockerfile.
    (基于Dockerfile和上下文)
  • 对创建的图像执行
    docker运行
在您的情况下,您希望与第二个服务处于相同的配置中,首先构建映像,然后运行容器


因为您使用图像创建了容器,所以您只有所述图像的细节,并且从未调用自己的dockerfile。

我找到了一个解决方法
我打开了docker cli,并调用
pear从那里安装http_request2

它不像托马斯·杜特里翁所阐述的溶液那样干净,而是工作


再次感谢Thomas,我不明白,你的docker compose使用的是一个图像,而不是dockerfile,而且这个图像没有http\U请求2。您是否打算在dockerfile中使用此图像作为源,并使用build而不是image来使用您自己的图像?嗨@ThomasDutrion,正如我所写的,我不太了解docker,如何从中工作?什么是将from子句放入dockerfile的权利?dockerfile中的ThanksFROM是应在其上执行以下指令的映像的名称。既然我们已经确定了这个问题,我会用一个更准确的答案来回答:)嗨,托马斯·杜特里昂,谢谢。这是我正在搜索的内容,如果我了解第二个服务,我可以用新的扩展重建图像。
FROM phpstorm/php-71-apache-xdebug-26

# ...
version: "3.8"

services:
  my-first-service:
    image: phpstorm/php-71-apache-xdebug-26
  my-second-service:
    build:
      context: .
      dockerfile: Dockerfile