我开始在项目中使用 Docker,这些项目中的大多数都在 PHP 上运行(一些在 Nginx/PHP-FPM 上,一些在 Apache/PHP 上作为模块)。
问题是:我的大脑无法理解何时将 Dockerfile 上的 ADD 和 VOLUME 指令用于包含源代码的路径。
这就是我想要的:更改一行代码,访问容器端口上的浏览器,然后查看更改。依此类推,直到事情按预期运行,然后我将代码“添加”到机器并部署它。这就是我认为 Docker 的运行方式。我错了吗?
AFAIK,ADD 指令将给定路径上的文件复制到图像,而 VOLUME 指令只是说我将在主机上挂载给定路径。
到目前为止,我脑海中闪过的东西:
通过 ADD 添加源代码文件,然后在命令行中使用“-v”开关将源代码挂载到与 ADD 相同的路径上。
使用 VOLUME,处理两个不同的 Dockerfile:用于开发容器,用于测试/开发,并根据需要构建每个(我认为这会适得其反,我的心告诉我,这不是如何它应该可以工作)。
有人可以帮我解决这个问题吗?我的大脑无法掌握什么,我应该做什么(并理解)以利用我的 Docker 知识?
最佳答案
官方PHP image给出了两种可能的工作流程的示例。
对于生产,您可以使用 Dockerfile 构建包含您的代码的容器:
FROM php:5.6-apache
COPY src/ /var/www/html/
而对于开发,您运行一个容器,其中包含一个引用本地文件系统的卷:
docker run -it --rm --name my-php-dev -v "$PWD/src":/var/www/html php:5.6-apache
关于php - 使用 Docker 进行开发,我应该使用 ADD 还是 VOLUME?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30008654/