从 Docker/PHP 访问 RAM 磁盘中的文件

问题描述 投票:0回答:1

我正在 Docker 环境中的 Raspberry Pi 上使用 Portainer 运行一个小型本地网页。图片是

php:8-apache
index.php
和所有文件都存储在
/data/DockerVolumes/MyWebServer/www/html
中,通过绑定映射到容器中的
/var/www/html
。这很好用。

index.php
包括在本机 Raspi OS 中由容器外部运行的 cron 作业经常更新的图像。这也很好用:执行 cron 作业并在
/data/DockerVolumes/MyWebServer/www/html
中找到新图像后,浏览器更新将显示新图像。
index.php
中的命令如下:

<img src="./graph.png" alt="" style="width:80%;height:80%;">

现在我想将这些非静态文件移动到安装到

mnt/ram_disk
的ram磁盘上。我在 Portainer 配置中添加了一个新卷:容器中的
/mnt/ram_disk
通过绑定映射到主机上的
/mnt/ram_disk
。我还更改了 PHP 文件,如下:

<img src="/mnt/ram_disk/graph.png" alt="" style="width:80%;height:80%;">

由于某种原因,这不起作用。没有显示图像。我还尝试添加从

/data/DockerVolumes/MyWebServer/www/html/graph.png
/mnt/ram_disk/graph.png
的符号链接,但这也不起作用。

我的理解是

/mnt/ram_disk
可以从docker容器内访问。但为什么
index.php
无法访问该文件夹中的信息?有人能告诉我,我的做法哪里奇怪吗?

提前致以最诚挚的问候和感谢

php docker raspberry-pi volumes ramdisk
1个回答
0
投票

看起来您正在尝试使用文件系统中的绝对路径在浏览器中查看图像。

假设您的 URL 是

https://localhost/
,那么您使用
<img src="/mnt/ram_disk/graph.png" alt="" style="width:80%;height:80%;">
加载的图像将从
https://localhost/mnt/ram_disk/graph.png
加载,这很可能是不正确的。

您应该确保您的 ram_disk 已安装在您的

/data/DockerVolumes/MyWebServer/www/html
文件夹中,或者您有一个符号链接并且符号链接已启用。

docker run -d \
  -v /data/DockerVolumes/MyWebServer/www/html:/var/www/html \
  -v /mnt/ram_disk:/var/www/html/images \
  --name my_web_server \
  your-image-name

然后加载您的图像

<img src="/images/graph.png" alt="" style="width:80%;height:80%;">

如果您使用 docker compose,则可以使用 compose 文件完成类似的操作。

© www.soinside.com 2019 - 2024. All rights reserved.