php - docker php:7.1-apache 不加载 http_request2
问题描述
作为第一件事,我希望告诉我我是 docker 的菜鸟。
我正在尝试使用docker在我的机器上安装一个虚拟化的Apache 。
这是我的码头文件
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库时,我得到了这个错误
警告:require_once(HTTP/Request2.php):无法打开流:第 4 行的 /var/www/html/dadilib/get_data.php 中没有这样的文件或目录
我哪里错了?我没有在文件中定义什么?
谢谢
斯特凡诺
解决方案
您可能需要更深入地回到 docker 的基本概念。不确定你从哪里学到的,但我会推荐 youtube 上的“那个 devops 人”:https ://www.youtube.com/watch?v=wyjNpxLRmLg&list=PLHq1uqvAteVvqQaaIAvfIWWTL_JmmXcfg
有关 PHP 生态系统的更多信息,请查看https://serversforhackers.com/t/containers
在您的情况下,您需要先了解 docker,然后再了解 docker-compose。在 docker 端,你有一个“图像”的概念,它描述了如何创建一个“容器”。将图像视为一种食谱,当您 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 network create)
- docker pull my-first-service 的镜像
- 运行一个容器 *_my-first-service_1 (docker run)
- 做一个
docker build -t *_my-second-service -f Dockerfile .
(基于 dockerfile 和上下文) - 做一个
docker run
创建的图像。
在您的情况下,您希望与第二个服务具有相同的配置,首先构建映像,然后运行容器。
因为您使用图像创建了容器,所以您只有所述图像的细节,并且从未调用您自己的 dockerfile。
推荐阅读
- python - TypeError:过滤器类型的对象不是 JSON 可序列化的 - 嵌套对象
- wordpress - 寻求为 Contact Form 7 创建“按表单视图付费”系统的方法
- node.js - 从目录中的所有 png 创建 mp4
- excel - 使用 MSXML 登录以进行数据抓取
- node.js - 试图在 nodejs 中获取 meanfreq 会导致常量
- python - gremlin_python 在向顶点添加属性时由于 aiohttp.WSMsgType.closed 引发 RuntimeError 异常
- prolog - 如何通过在 Prolog 中创建这些整数的列表来查询两个值之间的整数?
- python - 将数据附加到现有工作表并使用 Python 将其保存在其他位置\新名称
- c# - 缩放对象以适应屏幕统一
- android - 捕获快速递增/旋转值以确认其通过阈值的最佳方法