php - 使用 Docker 进行开发,我应该使用 ADD 还是 VOLUME?

标签 php docker

我开始在项目中使用 Docker,这些项目中的大多数都在 PHP 上运行(一些在 Nginx/PHP-FPM 上,一些在 Apache/PHP 上作为模块)。

问题是:我的大脑无法理解何时将 Dockerfile 上的 ADD 和 VOLUME 指令用于包含源代码的路径。

这就是我想要的:更改一行代码,访问容器端口上的浏览器,然后查看更改。依此类推,直到事情按预期运行,然后我将代码“添加”到机器并部署它。这就是我认为 Docker 的运行方式。我错了吗?

AFAIK,ADD 指令将给定路径上的文件复制到图像,而 VOLUME 指令只是说我将在主机上挂载给定路径。

到目前为止,我脑海中闪过的东西:

  1. 通过 ADD 添加源代码文件,然后在命令行中使用“-v”开关将源代码挂载到与 ADD 相同的路径上。

  2. 使用 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/

相关文章:

javascript - 使用数据库制作动态下拉菜单

php - 从 PHP 版本字符串中删除 ubuntu

docker - 如何用 nix 构建一个 docker 容器?

linux - 使用 Kubernetes 增加 docker 容器的基本设备大小

php - 如何在紧急情况下阻止站点的所有用户?

php - 检查两个地址 "might"在 php 中是否相同

javascript - 缩放图像以最适合框架(div)的算法

macos - 用于 Macos Catalina 的 Docker 桌面在容器中挂载 SD 卡卷作为循环设备以使用 dd 闪存 SD 卡

docker - Docker容器文件系统访问

architecture - docker 容器内的 salt minion 才?