我正在 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
无法访问该文件夹中的信息?有人能告诉我,我的做法哪里奇怪吗?
提前致以最诚挚的问候和感谢
看起来您正在尝试使用文件系统中的绝对路径在浏览器中查看图像。
假设您的 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 文件完成类似的操作。