我正在学习Docker并尝试理解volumes
。查看wordpress compose及其dockerfile的这个示例,我不知道哪个命令负责将wordpress文件填充到/var/www/html
。
我确实看到dockerfile中有VOLUME /var/www/html
命令来创建挂载点。
有命令下载wordpress文件并放入/usr/src/wordpress
目录。
但我没有得到的是文件是如何进入/var/www/html
的?
只是挂载到这个目录导致所有wordpress文件神奇地存储在这个?
这是其他地方码头工人这样做的吗?
编辑:在运行docker-compose up
时,这些wordpress文件已被移动或复制。我不是问如何将文件移动/挂载到/var/www/html
。但问题是这个事情是如何引用上面的dockerfile和docker compose文件的。
由于
答案 0 :(得分:1)
在这种情况下,entrypoint
正在复制文件(如果它们尚不存在)。请注意Dockerfile中的the wordpress source is added to /usr/src/wordpress。然后,当容器启动时,入口点checks if some files exist,如果不是,则为copies the wordpress source into the current directory,即WORKDIR
,即/ var / www / html。
将/var/www/html
指定为VOLUME
,从容器的角度来看,将文件放入其中的唯一方法是将带有文件的docker卷附加到该文件。把它想象成一个挂载点。
您可以将本地文件系统附加到该卷:
docker run -v /path/to/local/webroot:/var/www/html wordpress
或者您可以创建一个docker卷并将其用于持久的,更多docker-esque对象:
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 run -v webroot:/var/www/html wordpress