示例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,显示正常。
参考: