示例docker-compose.yml内容:
注:当前所在目录/root/docker/nginx
version: "3"
services:
nginx:
image: nginx:latest
container_name: nginx
restart: always
ports:
- "80:80"
volumes:
- ./conf.d:/etc/nginx/conf.d
- ./log:/var/log/nginx
- ./www:/usr/share/nginx/html
当我们想使用某个目录,但又不想直接复制过来,因为会占用空间,后续源目录文件变更,还需要进行处理。
为了解决上述出现的问题,我们想到可以使用软链接。
接着我们在宿主机通过ln -s创建了软连接,比如ln -s /root/upload ./www/upload
但是,根本无法访问创建软链接的资源。
很明显资源不存在,所以我们应该进入容器查看建立软连接的资源是否存在。
通过docker exec -it nginx bash进入容器,发现软链接存在,源目录文件没有。
到这里,我们应该挂载数据卷就可以解决这个问题。
修改docker-compose.yml文件:
version: "3"
services:
nginx:
image: nginx:latest
container_name: nginx
restart: always
ports:
- "80:80"
volumes:
- ./conf.d:/etc/nginx/conf.d
- ./log:/var/log/nginx
- ./www:/usr/share/nginx/html
- /upload:/root/docker/nginx/www
以上修改,主要是将 宿主机/upload目录 挂载到 容器/root/docker/nginx/www目录。
然后执行下面命令:
docker-compose down
docker-compose up -d
最后,访问http://ip:80/xxx,显示正常。
参考: