在树莓派上使用Docker运行Laravel - 无法打开流:权限被拒绝

17 浏览
0 Comments

在树莓派上使用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,但我不太愿意采用这种方法。

0
0 Comments

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 .来进行设置。

0