方法一:是权限问题,最后应用生成的文件都各自挂载一个目录(不要目录中包含目录,一个一个挂载显示出来)
version: '3.0'
services:
luxu:
build:
#这是指定dockerfile的文件路径
context: /opt/app/docker
dockerfile: Dockerfile
image: luxu:V1.0
container_name: luxu
restart: always
ports:
- 8080:8080
#如果和宿主机共用一个网络,就不需要设置端口,不然就使用默认网桥模式
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/app/luxuAfter:/opt/app/luxuAfter:rw
- /opt/app/filedata/:/opt/app/filedata/:rw
- /opt/app/mysql/mysqldump:/usr/bin/mysqldump
方法二:如果您想要确保 Docker 容器内挂载目录下的所有子目录都具有操作权限,可以尝试在 Docker Compose 中设置一个适当的 umask 值。
在您的 docker-compose.yml 文件中,您可以添加一个 umask 的环境变量来设置默认文件和目录的权限掩码。以下是一个示例:
version: '3'
services:
your-service:
image: your-image
volumes:
- /opt/app/luxuAfter:/opt/app/luxuAfter:rw
environment:
- "UMASK=0000"
在上面的示例中,我们将 UMASK 环境变量设置为 0000,这意味着新创建的文件和目录将具有最大的权限(即读取、写入和执行权限)请注意,具体的环境变量设置可能因您使用的基础镜像或操作系统而有所不同。如果上述示例对您的情况不适用,请参考您所使用的容器镜像的文档,以了解如何在其中设置默认权限。另外,确保您在 Docker 容器内挂载目录的宿主机上设置了正确的权限,以确保容器内部的进程可以在该目录中进行读写操作。