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

时间:2018-10-11 15:50:18

标签: docker docker-compose dockerfile

请帮助我!

我不知道该怎么做,我有一个dockerfile文件,如下所示。

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

我在名为code的目录中从未看到foo.php。如何查看foo.php?

它的逻辑是什么?当我删除“ volumes”参数时,它会在容器中创建,但我的代码目录看不到。因为它不同步。

如何在dockerfile文件中编写代码?

3 个答案:

答案 0 :(得分:0)

这是您可能要看的东西。 在您的Dockerfile中,您需要为用户提供访问容器中位置的权限。这就是为什么未创建文件的原因。

FROM php:fpm  
RUN chown $user --recursive /var/www/html && touch /var/www/html/foo.php

我进行了这些更改,并能够在主机上获取文件。

答案 1 :(得分:0)

要创建目录,您可以使用其中一个

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目录。

答案 2 :(得分:0)

我已经尝试了您所说的内容,但仍然无法得到结果。仍然在主机的代码文件夹中看不到foo.php文件。我没有发现我在哪里做错了。< / p>