docker php:7.1-apache 不加载 http_request2
docker php:7.1-apache don't load http_request2
首先要告诉大家我是 docker 的菜鸟。
我正在尝试使用 docker 在我的机器上安装一个虚拟化的 Apache。
这是我的docker文件
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
但是当我尝试导入 php http_request2 库时,我得到了这个错误
Warning: require_once(HTTP/Request2.php): failed to open stream: No such file or directory in /var/www/html/dadilib/get_data.php on line 4
我哪里错了?我没有在文件中定义什么?
谢谢
斯特凡诺 G
您可能需要更深入地回到 docker 的基本概念。不确定你从哪里学到的,但我会推荐 youtube 上的“That devops guy”: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
,因此你需要在现有图像之上执行更多指令。这就是 Dockerfile
、docker build
和 FROM
发挥作用的地方。
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
中,我描述了两个服务。
docker-compose 在执行 up
时会执行以下操作:
- 创建网络 *_default(docker 网络创建)
- docker 拉取 my-first-service 的镜像
- 运行一个容器*_my-first-service_1 (docker 运行)
- 做一个
docker build -t *_my-second-service -f Dockerfile .
(基于docker文件和上下文)
- 对创建的图像进行
docker run
。
在您的情况下,您希望与第二个服务处于相同的配置中,首先构建映像,然后 运行安装容器。
因为您使用图像创建容器,所以您只有所述图像的细节,而从未调用您自己的 docker 文件。
我找到了解决方法
我打开 docker cli 并调用
pear install http_request2
从那里开始。
不像 Thomas Dutrion 提出的解决方案那样干净,但有效。
再次感谢托马斯
首先要告诉大家我是 docker 的菜鸟。
我正在尝试使用 docker 在我的机器上安装一个虚拟化的 Apache。
这是我的docker文件
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
但是当我尝试导入 php http_request2 库时,我得到了这个错误
Warning: require_once(HTTP/Request2.php): failed to open stream: No such file or directory in /var/www/html/dadilib/get_data.php on line 4
我哪里错了?我没有在文件中定义什么?
谢谢
斯特凡诺 G
您可能需要更深入地回到 docker 的基本概念。不确定你从哪里学到的,但我会推荐 youtube 上的“That devops guy”: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
,因此你需要在现有图像之上执行更多指令。这就是 Dockerfile
、docker build
和 FROM
发挥作用的地方。
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
中,我描述了两个服务。
docker-compose 在执行 up
时会执行以下操作:
- 创建网络 *_default(docker 网络创建)
- docker 拉取 my-first-service 的镜像
- 运行一个容器*_my-first-service_1 (docker 运行)
- 做一个
docker build -t *_my-second-service -f Dockerfile .
(基于docker文件和上下文) - 对创建的图像进行
docker run
。
在您的情况下,您希望与第二个服务处于相同的配置中,首先构建映像,然后 运行安装容器。
因为您使用图像创建容器,所以您只有所述图像的细节,而从未调用您自己的 docker 文件。
我找到了解决方法
我打开 docker cli 并调用
pear install http_request2
从那里开始。
不像 Thomas Dutrion 提出的解决方案那样干净,但有效。
再次感谢托马斯