You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器迁移至Linux环境后图片无法加载的问题求助

Docker容器迁移至Linux环境后图片无法加载的问题求助

把Docker容器迁移到Linux系统后,图片无法加载,浏览器返回以下错误:

GET /storage/image/WBRNZ0c6tnOfED2APNuYRcSjqIfzvJWXYnBlNRkB.jpg HTTP/1.1" 403

我的docker-compose.yml文件内容如下:

services:
      nginx:
        image: nginx:latest
        volumes:
          - ./:/var/www/
          - ./_docker/nginx/conf.d/:/etc/nginx/conf.d/
        ports:
          - "8876:80"
        depends_on:
          - app
        container_name: project_nginx
      app:
        build:
            context: .
            dockerfile: _docker/app/Dockerfile
        volumes:
          - ./:/var/www/
        depends_on:
            - db
        container_name: project_app

      db:
          image: mysql:8.0
          restart: always
          volumes:
              - ./tmp/db:/var/lib/mysql
          environment:
              MYSQL_DATABASE: blogdb
              MYSQL_ROOT_PASSWORD: root
          ports:
              - "8101:3306"
          command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
          container_name: project_db
      phpmyadmin:
          image: phpmyadmin/phpmyadmin
          container_name: phpmyadmin
          environment:
              PMA_HOST: db
              PMA_USER: root
              PMA_PASSWORD: root
          ports:
              - "8080:80"
          depends_on:
              - db

nginx.conf文件的内容如下:

server {
        listen 80;
        index index.php index.html;
        error_log  /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;
        root /var/www/public;
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass app:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
        location / {
            try_files $uri $uri/ /index.php?$query_string;
            gzip_static on;
        }
    }

一开始我以为是权限问题,在论坛上看到说Nginx没有某个文件夹的权限,可以用这个命令修复:

chmod 777 -R storage

但执行这个命令时我得到了:chmod: changing permissions of 'storage': Operation not permitted。后来我用sudo以超级用户身份运行,命令执行成功了,但图片还是加载不出来。

我进一步排查,用ls -l命令查看文件夹权限,结果如下:

drwxrwxrwx 5 www-data www-data 4096 Nov 5 22:58 storage

看起来storage文件夹已经给了www-data权限(我理解这是服务器的默认用户名)。

如果我直接访问http://localhost:8876/storage/image/8CvZHzr5BJnZseIkh8Ne7sTMyVFHcGBUoXeAmNXS.jpg,也会收到错误。

提前感谢大家的帮助,轻点喷我呀,我还在学习阶段!

备注:内容来源于stack exchange,提问作者Danil Klyuka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 08:49:36