在树莓派上使用Docker运行Laravel - 无法打开流:权限被拒绝
在树莓派上使用Docker运行Laravel - 无法打开流:权限被拒绝
我正在RPI上使用Docker进行部署测试,但出现了“Failed to open stream: Permission denied”的错误。
我尝试了一些解决方案,但都没有解决我的问题。
这是我的Dockerfile:
FROM php:8.0-fpm-alpine RUN docker-php-ext-install pdo pdo_mysql RUN chown -R www-data:www-data /var/www RUN chmod -R 755 .
和docker-compose.yml文件:
version: "3.7" networks: laravel: services: nginx: image: nginx:stable-alpine restart: unless-stopped container_name: nginx ports: - "80:80" volumes: - ./:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - php - mariadb networks: - laravel mariadb: image: yobasystems/alpine-mariadb:latest restart: unless-stopped container_name: mariadb tty: true ports: - "4306:3306" volumes: - ./mariadb:/var/lib/mariadb environment: MYSQL_DATABASE: laravel MYSQL_ROOT_PASSWORD: laravel_dev MYSQL_USER: laravel_dev MYSQL_PASSWORD: laravel_dev SERVICE_TAGS: dev SERVICE_NAME: mariadb networks: - laravel phpmyadmin: image: phpmyadmin container_name: phpmyadmin restart: unless-stopped ports: - 4380:80 environment: PMA_ARBITRARY: 1 PMA_PORT: 3306 PMA_HOST: mariadb PMA_USER: laravel_dev PMA_PASSWORD: laravel_dev depends_on: - mariadb networks: - laravel php: build: context: . dockerfile: Dockerfile container_name: php volumes: - ./:/var/www/html ports: - "9000:9000" networks: - laravel composer: image: composer:latest container_name: composer volumes: - ./:/var/www/html working_dir: /var/www/html networks: - laravel npm: image: node:current-alpine3.14 container_name: npm volumes: - ./:/var/www/html working_dir: /var/www/html entrypoint: ['npm'] networks: - laravel artisan: build: context: . dockerfile: Dockerfile container_name: artisan volumes: - ./:/var/www/html depends_on: - mariadb working_dir: /var/www/html entrypoint: ['php', '/var/www/html/artisan'] networks: - laravel
唯一有效的方法是在项目根目录上使用chmod 777,但我不太愿意采用这种方法。
Laravel with docker on RPI - Failed to open stream: Permission denied
在Reddit上找到了一个解决方案,链接为https://www.reddit.com/r/docker/comments/hjsipd/permission_denied_with_volumes/fwoixqe/。我需要将项目文件夹分配给容器用户,通过less /etc/passwd
找到了用户的名称,本例中用户为www-data,UID为82。然后运行命令chown -R 82:82 .
来进行设置。