我正在学习 Docker 并试图理解volumes
。看看这个例子WordPress 撰写 https://docs.docker.com/compose/wordpress/#define-the-project和它的docker文件 https://github.com/docker-library/wordpress/blob/7902c5f856c7fbc20dd70762bef324158328dcff/php5.6/apache/Dockerfile我不知道哪个命令负责将 WordPress 文件填充到/var/www/html
.
我确实看到有VOLUME /var/www/html
dockerfile 中的命令创建挂载点。
有命令下载wordpress文件并放入/usr/src/wordpress
目录。
但我不明白的是文件是如何进入的/var/www/html
?
难道只是挂载到这个目录导致所有的wordpress文件神奇地存储在这个目录中吗?
docker 是否在其他地方这样做?
EDIT:这些 WordPress 文件在运行时已被移动或复制docker-compose up
。我不是问如何将文件移动/挂载到/var/www/html
。但问题是,参考上面的 dockerfile 和 docker compose 文件,事情是如何发生的。
Thanks
在这种情况下,entrypoint
正在复制文件(如果它们尚不存在)。请注意在 Dockerfile 中wordpress 源已添加到 /usr/src/wordpress https://github.com/docker-library/wordpress/blob/7902c5f856c7fbc20dd70762bef324158328dcff/php5.6/apache/Dockerfile#L41。然后,当容器启动时,入口点检查某些文件是否存在 https://github.com/docker-library/wordpress/blob/7902c5f856c7fbc20dd70762bef324158328dcff/php5.6/apache/docker-entrypoint.sh#L27如果他们不这样做,那就将wordpress源复制到当前目录 https://github.com/docker-library/wordpress/blob/7902c5f856c7fbc20dd70762bef324158328dcff/php5.6/apache/docker-entrypoint.sh#L33,即WORKDIR
,即 /var/www/html。
一般 Docker 卷内容
With /var/www/html
指定为VOLUME
,从容器的角度来看,将文件放入其中的唯一方法是附加一个包含文件的 docker 卷。将其视为挂载点。
您可以将本地文件系统附加到该卷:
docker run -v /path/to/local/webroot:/var/www/html wordpress
或者您可以创建一个 docker 卷并将其用于持久的、更具 docker 风格的对象:
docker volume create webroot
然后使用临时容器将文件移入其中:
docker run --rm -v /path/to/local/webroot:/var/www/html \
-v webroot:/var/www/html2 \
ubuntu cp -a /var/www/html/ /var/www/html2
此时你有webroot
作为 docker 卷,您可以附加到任何容器。
docker run -v webroot:/var/www/html wordpress
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)