PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как добавить www-data в alpine образ?

Здравствуйте, поднимаю laravel внутри докера
вот мой компоуз файл

version: '3.1'
services:
    webserver:
        build:
            context: ./docker
            dockerfile: development/nginx/Dockerfile
        volumes:
            - './:/app'
        ports:
            - '8080:80'

    php-fpm:
        build:
            context: ./docker
            dockerfile: development/php/Dockerfile
        environment:
            PHP_IDE_CONFIG: serverName=Docker
        volumes:
            - './:/app'


все dockerfile на основе alpine образов

вот пример пхп
FROM php:8.1-fpm-alpine

ENV XDEBUG_VERSION 3.1.5

RUN apk add --no-cache fcgi git \
    && docker-php-ext-install opcache \
    && git clone --branch $XDEBUG_VERSION --depth 1 https://github.com/xdebug/xdebug.git /usr/src/php/ext/xdebug \
    && docker-php-ext-configure xdebug --enable-xdebug-dev \
    && docker-php-ext-install xdebug \
    && apk del git

RUN mv $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini
COPY ./common/php/conf.d /usr/local/etc/php/conf.d
COPY ./common/php/php-fpm.d /usr/local/etc/php-fpm.d
COPY ./development/php/conf.d /usr/local/etc/php/conf.d

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/bin --filename=composer --quiet

WORKDIR /app

COPY ./development/php/entrypoint.sh /usr/local/bin/docker-php-entrypoint
RUN chmod +x /usr/local/bin/docker-php-entrypoint

все собирается и стартует, но я получаю ошибку
The stream or file "/app/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log:


на сколько я понял в alpine сборках нет пользователя www-data или ID не совпадают, пока точно не понимаю
но как я не пытался запустить - ничего не выходит

что делать?
на хост машине права на папку с логами $USER:www-data
внутри контейнера 1000:xfs

нагуглил такое https://gist.github.com/zdenekdrahos/53f16cfe902ff... , но оно мне не помогает (не понимаю как применить)
  • Вопрос задан
  • 832 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Tiasar
Web Developer
в alpine группа www-data есть с uid 82
добавить пользователя можно так:
adduser www-data -S -H --disabled-password -g "www-data" -h /dev/null -u 82 -G www-data

Но тогда для пользователя и группы ID будут 82, а в той же ubuntu ID 33

Я бы сделал по другому. Для обоих образов (nginx и php) добавил бы одинаковые группы и пользователи, скажем www:www с ID - 1010 через Dockerfile:
RUN addgroup -S -g 1010 www && adduser www -S -H --disabled-password -g "www" -h /dev/null -u 1010 -G www

ну и в том же Dockerfile указал что запускаться из под этого пользователя:
USER 1010
На хост машине тоже бы добавил пользователя и группу с таким же ID

Ну и в конфигах nginx и php указал бы пользователя www
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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