如何在 docker 中使用卷运行 mkdir 命令?



请帮助我!!

我无法弄清楚其中的逻辑。我有一个码头文件文件,如下所示。

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 文件。我没有发现我哪里做错了。

相关内容

最新更新