请帮助我!!
我无法弄清楚其中的逻辑。我有一个码头文件文件,如下所示。
FROM php:fpm
RUN touch /var/www/html/foo.php
这是我的撰写文件:
version: '3'
services:
web:
container_name: phpx
build : .
ports:
- "80:80"
volumes:
- ./code:/var/www/html
我从来没有在我的名为代码的目录中看到 foo.php。我怎样才能看到foo.php?
它的逻辑是什么?当我删除"volumes"参数时,它会在容器中创建,但我的代码目录看不到。因为它不是同步的。
如何在 dockerfile 文件中编写代码?
要创建目录,您可以使用
FROM php:fpm
RUN mkdir -p /var/www/html/
RUN touch /var/www/html/foo.php
或
FROM php:fpm
WORKDIR /var/www/html/
RUN touch /var/www/html/foo.php
现在让我们像
docker build -t phpx .
现在像这样运行
docker run -it phpx /bin/sh
现在,您可以找到/var/www/html/foo.php
文件的位置。
如果您尝试挂载在我们的例子中code
的空目录,它将删除mounted
目录中的所有内容。
docker run -it -v full_host_path/code:/var/www/html phpx /bin/sh
针对您的问题的可能解决方案可能是将foo.php
放入code
并安装code
目录。
以下是您可能想要查看的内容。 在 Dockerfile 中,您需要为用户提供访问容器中位置的权限。这就是未创建文件的原因。
FROM php:fpm
RUN chown $user --recursive /var/www/html && touch /var/www/html/foo.php
我进行了这些更改,并且能够在主机上获取文件。
我已经尝试了您所说的内容,但仍然无法得到结果。我仍然看不到主机上代码文件夹中的 foo.php 文件。我没有发现我哪里做错了。