Docker PHP+Apache - uprawnienia do zapisu

0

Cześć,
potrzebuje lokalnie uruchomić stary projekt napisany w php 5.6 dlatego chciałem użyć Dockera, żeby nie instalować starej wersji PHP w systemie.
Użyłem tego rozwiązania https://github.com/mzazon/php-apache-mysql-containerized
Plik z projektem wrzuciłem do katalogu public_html i projekt udało się uruchomić.
Problem pojawił się w momencie kiedy skrypt PHP próbował coś zapisać na dysku. Dostaje cały czas taki komunikat:
Warning: file_put_contents(people.txt): failed to open stream: Permission denied in /var/www/html/index.php on line 16
Próbowałem zmienić uprawnienia do folderu w kontenerze na różne sposoby ale bez efektu.
Może ktoś bardziej doświadczony będzie w stanie pomóc?

Tak wyglądają pliki:
docker-compose.yml

version: "3.2"
services:
  php:
    build: 
      context: './php/'
      args:
       PHP_VERSION: ${PHP_VERSION}
    networks:
      - backend
    volumes:
      - ${PROJECT_ROOT}/:/var/www/html
    container_name: php
  apache:
    build:
      context: './apache/'
      args:
       APACHE_VERSION: ${APACHE_VERSION}
    depends_on:
      - php
    networks:
      - frontend
      - backend
    ports:
      - "81:80"
    volumes:
      - ${PROJECT_ROOT}/:/var/www/html
    container_name: apache
networks:
  frontend:
  backend:
volumes:
    data:

PHP

ARG PHP_VERSION="5.6-cli"
FROM php:${PHP_VERSION:+${PHP_VERSION}-}fpm-alpine

RUN apk update;
apk upgrade;

RUN docker-php-ext-install mysqli
#RUN chown -R www-data:www-data /var/www/
#RUN chmod 755 /var/www/

APACHE:

ARG APACHE_VERSION="2.4"
FROM httpd:${APACHE_VERSION:+${APACHE_VERSION}-}alpine

RUN apk update;
apk upgrade;

Copy apache vhost file to proxy php requests to php-fpm container

COPY demo.apache.conf /usr/local/apache2/conf/demo.apache.conf
RUN echo "Include /usr/local/apache2/conf/demo.apache.conf"
>> /usr/local/apache2/conf/httpd.conf
#RUN chown -R www-data:www-data /var/www/html
#RUN chmod 755 /var/www/html

0

Instalacja na windowsie kilku wersji PHP to banał... wolałbym to, niż męczyć się z Dockerem.

Co do pytania widzę, że:

chmod 755 /var/www/

robisz bez -R

tutaj może być przyczyna

0

To niestety nie to :/
Mi idea Dockera się nawet podoba, jeśli przebrnę przez ustawienia może nawet zostanę z nim na dłużej ;)

0

Jesteś w stanie sprawdzić, gdzie konkretnie skrypt PHP próbuje zapisać plik? Możliwe że próbuje gdzieś poza /var/www, w CWD procesu php.

1

Ok, problem rozwiązany.
Byłem przekonany, że skrypt próbuje zapisać plik w kontenerze a on go chciał zapisać na moim dysku lokalnym w zmapowanym folderze.
Zmiana uprawnień folderu lokalnego rozwiązała problem.
kelog dzięki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1