由于遇到了类似的问题,我决定做一些简单的事情,相当于为开发人员提供与Docker挂载点相同的解决方案:
1- 检查容器是否具有rsync工具,如果没有则安装。
2- 通过dockerfile生成一个shell脚本文件,其中包含以下说明:
WORKDIR /var/www/html
RUN mkdir -p /folder-shared
RUN echo "#!/bin/bash" > sync-windows-files.sh
RUN echo 'while true; do' >> sync-windows-files.sh
RUN echo ' rsync -avu "/folder-shared/" "/var/www/html"' >> sync-windows-files.sh
RUN echo ' sleep 2;' >> sync-windows-files.sh
RUN echo 'done' >> sync-windows-files.sh
COPY . .
在最后一行添加命令以在后台运行:
CMD ["bash", "-c", "sh sync-windows-files.sh &]
注意:我的Web服务器查看的是
/var/www/html,
dockerfile应该始终位于项目根目录下,以加快进度。
3 - 准备DockerCompose.yml:
services:
regulacao:
container_name: shared-windows-files
build:
context: .
network: host
volumes:
- ./:/folder-shared
working_dir: /var/www/html/
ports:
- "8587:80"
解释:
这个问题的解决方法是将docker共享映射到另一个目录,本例中在构建过程中在容器镜像的根目录下创建了名为
folder-shared的目录。一旦映射了目录,就可以创建一个shell脚本
sync-windows-files.sh,它执行无限循环,将
folder-shared共享文件夹中的文件与Web服务器指向的文件夹同步,对我来说是
/var/www/html。
通过这样做,问题成功解决,希望您能理解。