docker php:7.1-apache不加载http_request2

aor9mmx1  于 2023-05-16  发布在  PHP
关注(0)|答案(2)|浏览(176)

首先我想说的是我是一个docker的新手。
我正在尝试使用docker在我的机器上虚拟化Apache
这是我的dockerfile

FROM php:7.1-apache
RUN docker-php-ext-install mysqli
RUN pecl install xdebug-2.6.0
RUN echo "VetrinaECM localhost" >> /etc/apache2/apache2.conf
RUN pear install http_request2
RUN docker-php-ext-enable xdebug
COPY . /var/www/html/
RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/php.ini

这是我的 docker-compose.yml

version: '2'
services:
  webserver:
    image: phpstorm/php-71-apache-xdebug-26
    ports:
      - "80:80"
    volumes:
      - ./:/var/www/html
    environment:
      XDEBUG_CONFIG: remote_host=host.docker.internal

但是当我尝试导入phphttp_request2库时,我得到这个错误
警告:require_once(HTTP/Request2.php):无法打开流:/www/html/cn/view/400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
我哪里错了?我在文件中没有定义什么?
谢谢
斯特凡诺G

czq61nw1

czq61nw11#

您可能需要更深入地了解docker的基本概念。不知道你是从哪里学来的,但我推荐youtube上的“那个devops家伙”:https://www.youtube.com/watch?v=wyjNpxLRmLg&list=PLHq1uqvAteVvqQaaIAvfIWWTL_JmmXcfg
PHP生态系统中的更多内容,请查看https://serversforhackers.com/t/containers
在你的情况下,你需要首先理解docker,然后是docker-compose。在docker端,你有一个“image”的概念,它描述了如何创建一个“container”。把图像想象成一种食谱,当你docker运行这个图像时,你会得到一顿饭(一个容器)。
在本例中,您希望将pecl的http请求库添加到phpstorm/php-71-apache-xdebug-26,因此需要在现有映像的基础上执行更多指令。这就是Dockerfiledocker buildFROM发挥作用的地方。

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

# ...

完成此操作后,构建完成,您可以运行一个具有基础映像(来自)+您的自定义的所有功能的容器。
是时候让docker-compose加入了。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中,我描述了两个服务。在执行up时,docker-compose将执行以下操作:

  • 创建网络 *_default(docker network create)
  • docker pull the image of my-first-service
  • 运行容器 *_my-first-service_1(docker run)
  • 执行docker build -t *_my-second-service -f Dockerfile .(基于dockerfile和context)
  • 做一个docker run的图像创建。

在本例中,您希望与第二个服务处于相同的部署中,首先构建映像,然后运行容器。
因为你用一个镜像创建了你的容器,所以你只有镜像的细节,而从来没有调用过你自己的dockerfile。

tjjdgumg

tjjdgumg2#

我找到了一个变通办法。我打开了docker cli并从那里运行pear install http_request2

相关问题