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
相关产品推荐
相关产品推荐

