docker - 文件在 docker-compose 中不可见
问题描述
我对 docker 很陌生,我尝试用 docker-compose 构建一个 LAMP 堆栈。我在那里找到了一个不错的教程。我想我理解卷和绑定挂载之间的区别,但是,我想我在某些时候遇到了问题。我想让我的一个文件夹可用于 LAMP 堆栈(我的源代码,位于文件夹“src”中)。但是,源在 /var/www/html 文件夹中不可见。
我的 docker-compose 文件如下所示:
version: "3.7"
services:
mariadb:
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "no"
MYSQL_DATABASE: testdb
MYSQL_PASSWORD: testpassword
MYSQL_ROOT_PASSWORD: rootpwd
MYSQL_USER: testuser
TZ: Europe/Rome
image: "mariadb:10.5.2"
volumes:
- "mariadb-volume:/var/lib/mysql"
php-httpd:
image: "php:7.3-apache"
ports:
- "80:80"
volumes:
- ./src/:/var/www/html/
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- "mariadb:db"
ports:
- "8081:80"
volumes:
mariadb-volume: ~
Phpmyadmin 工作得很好,docker-compose 运行也没有任何警告。我的撰写命令是
docker-compose up -d --force-recreate
有趣的是,当我将“./src/”更改为“./DocumentRoot”时,会在我的主机上创建文件夹 DocumentRoot。但是,将文件放在主机上的 DocumentRoot 或 docker 中的 /var/www/html 中不会分别显示 docker 或主机上的文件。尽管如此,我可以肯定地说我至少在正确的目录中。
我需要传递一些技巧或参数来让 docker 查看我主机上的文件吗?
解决方案
我想让我的一个文件夹可用于 LAMP 堆栈(我的源代码,位于文件夹“src”中)。但是,源在 /var/www/html 文件夹中不可见。
我认为关于安装如何与 docker 一起工作存在混淆。
当您为 docker 容器指定挂载时,例如:
php-httpd:
image: "php:7.3-apache"
ports:
- "80:80"
volumes:
- ./src/:/var/www/html/
只有容器php-httpd
会设置挂载,而不是 LAMP 堆栈的其他容器。
如果您需要在其他容器上设置该挂载,请在它们上明确执行。
有趣的是,当我将“./src/”更改为“./DocumentRoot”时,会在我的主机上创建文件夹 DocumentRoot。但是,将文件放在主机上的 DocumentRoot 或 docker 中的 /var/www/html 中不会分别显示 docker 或主机上的文件。
这就是坐骑的工作方式。当该文件夹存在于主机(此处src
)上时,docker 使用它将其内容从主机挂载到容器。当文件夹没有在主机上退出时,Docker 会创建它。
推荐阅读
- c# - UWP 通知 Toast 已激活、更新和过期
- android - DrawerNavigatorItems V3 react-native 0.60.4 需要一些帮助
- php - 通过偏移ID获取数组中的数据?
- arrays - 如何打印变量的名称而不是 Swift 中的值?
- python-3.x - 从 PDB 文件中仅提取我们需要的链
- android - Android Data Binding的Binding函数的执行顺序
- javascript - imageSwap onClick 通过 javascript 不触发
- css - 宽度属性不起作用
- ios - Apple 的自然语言框架中的词形还原不佳
- facebook-graph-api - 如何使用 facebook API 检查广告是否有“糟糕的广告体验”?