docker容器无法访问软链接问题

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

参考:

Docker容器中用nginx代理PHP访问软链接报404_App Store公众号小程序:分享录的博客-CSDN博客

linux中软连接为什么在docker内无法访问? - SegmentFault 思否

猜你喜欢

转载自blog.csdn.net/janthinasnail/article/details/126791953