Установить разрешения тома докера при создании контейнера - PullRequest
0 голосов
/ 10 октября 2019

У меня есть приложение PHP в Docker с пустой папкой журналов, которое я добавил в контейнер докера как том:

app:
    volumes:
        - ./app/logs:/var/log/app

Но когда приложение пытается написать, оно вызывает ошибку, потому что ононе имеет разрешения

Мне нужен способ устанавливать разрешения для него каждый раз, когда создается контейнер, поэтому не требуется никакого ручного процесса, мне также нужно, чтобы журналы сохранялись даже при разрушении контейнера.

Как можноЯ делаю это? Что было бы хорошей практикой для этого сценария?

1 Ответ

1 голос
/ 10 октября 2019

Ваш веб-сервер или средство записи в журналы не имеют прав на запись в / var / log / app. Здесь вы монтируете привязку каталога с хоста в контейнере, и в этом случае файлы и каталоги сохраняют разрешения, которые они имеют на хосте. Установка разрешений на вашем хосте решит проблему.

Обратитесь к следующему, чтобы сделать то же самое - запись в общих томах docker

В качестве альтернативы, я бы предложил создать том докера для журналов, который также решил бы ваше требованиеделая их постоянными .

Для создания тома используйте - docker create volume app-logs

services:

  app:
    volumes:
      - app-logs:/var/log/app

volumes:
app-logs:
  external: true

Затем вы можете использовать команду докера либо CMD или ENTRYPOINT, чтобыустановить правильные разрешения на подключенном томе. Это было бы как - CMD chown -R apache:apache /var/log/app

...