Задать вопрос
@looqa

Почему PHP приложение в Docker контейнере не может писать файлы?

Добрый день!
Уже несколько дней пытаюсь корректно развернуть php в docker контейнере, но никак не могу решить проблему с записью/редактированием файлов. PHP не может ничего записать. ОС - Ubuntu 22.02.
Мой docker-compose.yml:
version: "3.9"
services:
    app:
        build:
            context: ./
            dockerfile: Dockerfile
            args:
                user: pc
                uid: 1000
        user: "1000:1000"
        image: dkb-landing
        container_name: landing-app
        restart: unless-stopped
        working_dir: /var/www
        volumes:
            - ./:/var/www:delegated
        networks:
            - landing
    db:
        image: mysql:8.0
        container_name: landing-db
        restart: unless-stopped
        environment:
            MYSQL_DATABASE: ${DB_DATABASE}
            MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
            MYSQL_PASSWORD: ${DB_PASSWORD}
            MYSQL_USER: ${DB_USERNAME}
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - landing-data:/var/lib/mysql
        networks:
            - landing
    nginx:
        image: nginx:1.17-alpine
        container_name: landing-nginx
        restart: unless-stopped
        ports:
            - "8000:80"
        volumes:
            - ./:/var/www
            - ./docker-compose/nginx:/etc/nginx/conf.d
        networks:
            - landing
networks:
    landing:
        driver: bridge
volumes:
    landing-data:
        driver: local

Dockerfile:
FROM php:8.1-fpm

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip


# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www

Пробовал разные вариации `RUN chown 1000:1000 /var/www`, `RUN chown www-data:www-data /var/www`, `RUN usermod -u 1000 www-data` и т.д. по гайдам из интернета, но ничего не помогло. Как разрешить запись PHP-FPM в монтируемую директорию, при этом сохранив доступ и с хоста?
  • Вопрос задан
  • 207 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Kirill-Gorelov
С ума с IT
я не супер пупер спец, но я бы предложил добавить что-то вроде этого
RUN chown app:app ./
USER app

Установить владельца папки и самого пользователя и установить пользователя на папку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы