Php не может записать файл в докере

Я запускаю приложение Symfony 3.4 с докером, мне нужно загрузить файл и сохранить его в / web / files. Когда я пытаюсь это сделать, я получаю сообщение об ошибке:

Unable to create the "/home/docker/web/files/" directory

Обратите внимание, что я смонтировал каталог как Read-Write в cocker compose:

version: '2'
services:  

  front:
    image: nginx
    ports:
      - "81:80"
    links:
      - "engine:engine"
      - "db:db"
    volumes:
      - ".:/home/docker:ro"
      - "./docker/front/default.conf:/etc/nginx/conf.d/default.conf:ro"

  engine:
    build: ./docker/engine/
    volumes:
      - ".:/home/docker:rw"
      - "./docker/engine/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro"
    links:
      - "db:db"
    working_dir: "/home/docker"

  db:
    image: camptocamp/postgres:9.6
    ports:
      - "5433:5432"
    environment:
      - "POSTGRES_DB=pfe"
      - "POSTGRES_PASSWORD=admin"
      - "POSTGRES_USER=admin"
      - "PGDATA=/var/lib/postgresql/data/pgdata"

Я даже создал файлы каталога в / web, но он не работает!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 028
1

Ответы 1

Я создаю отдельный контейнер для своих файлов и просто основываю его на образе apache. Затем я использую ключ volumes_from, чтобы передать его в свой php. Попробуйте что-нибудь вроде этого:

services:
    apache:
        build: ./build/httpd
        links:
            - php
        ports:
            - 80:80
            - 443:443
        volumes_from:
            - app

    php:
        build: ./build/php
        ports:
            - 9000
            - 9001
        volumes_from:
            - app
        links:
            - mariadb
            - mail

    app:
        image: httpd:latest
        volumes:
            - ./:/var/www/html
        command: "echo true"

Я не вижу смысла запускать другой контейнер Apache, но я нашел решение здесь: stackoverflow.com/questions/39842112/…

Salim Ben Aissa 02.05.2018 13:53

это просто контейнер, который синхронизирует ваши файлы и, по-видимому, работает быстрее, это могло быть любое старое изображение tbh. Обратите внимание, что я вообще не установил никаких разрешений и никогда не получаю никаких ошибок разрешений. Что касается того ответа, который вы нашли, вы запускали эту команду ВНУТРИ своего докера или снаружи в ОС хоста?

delboy1978uk 02.05.2018 14:01

Другие вопросы по теме