拿了一个类似的项目,遇到了同样的问题,我决定做一些简单的事情,相当于为开发人员提供与 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 &]
注意:我的网络服务器正在查看/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执行无限循环,将文件夹共享共享文件夹中的文件同步到网络服务器将指向的文件夹,在我的例子中是/var/万维网/html。
这样问题就成功解决了,希望大家能理解。