Docker разрешение для папки с изображениями не обновляется - PullRequest
1 голос
/ 08 января 2020

при попытке запустить образ docker (openproject) в ECS мы получили сообщение об ошибке «ДЕТАЛИ: Для папки / var / openproject / pgdata должны быть права доступа u = rwx (0700)»

#ls -l /var/openporject
drwxr-xr-x 2 root     root     4096 Jan  8 15:56 assets
drwxr-xr-x 2 postgres postgres 4096 Dec 19 08:40 pgdata

Итак, мы попытались обновить разрешение для через dockerfile

FROM openproject/community:latest
#USER postgres
USER root

RUN chmod 700 /var/openproject/pgdata
RUN chmod 700 /var/openproject/assets

, даже после создания образа разрешение на папку не обновляется.

Метод сборки docker -составить:

version: '3'
services:
  openproject:
    container_name: openproj_server
    build:
      context: .
    ports:
      - 80:80
    environment:
      - DATABASE_URL=postgres://aws@postgresurl:5432/openproject
      - SECRET_KEY_BASE=junksecret

Предложения будут полезны

Обновление 1:

Пробная версия 1:

Настройка прав доступа через точку входа. sh Метод завершился ошибкой: ДЕТАЛИ: Файл "/ var / openproject / pgdata / PG_VERSION" отсутствует.

FROM openproject/community:latest
COPY ./entrypoint.sh /app/docker/
RUN chmod +x /app/docker/entrypoint.sh

**entrypoint.sh**
chmod 700 /var/openproject/pgdata
echo "Giving 700(rwx) Permission to pgdata folder"
chown postgres:postgres /var/openproject/pgdata
echo "Setting up ownership to postgres user / group(*just to double ensure)"

Журналы Cloudwatch:

2020-01-08 20:34:59.734 UTC [54] FATAL:  "/var/openproject/pgdata" is not a valid data directory
2020-01-08 20:34:59.734 UTC [54] DETAIL:  File "/var/openproject/pgdata/PG_VERSION" is missing.
2020-01-08 20:34:59,735 INFO exited: postgres (exit status 1; not expected)

Пробная версия 2:

Связывание непостоянного пустого хранилища для контейнеров в задаче Fargate, использовавшей последний открытый проект

**Fargate Task Def snip**
   "mountPoints": [
        {
          "readOnly": null,
          "containerPath": "/var/openproject",
          "sourceVolume": "openproject"
        }

Журналы Cloudwatch:

2020-01-08 21:50:51.686 UTC [226] FATAL:  data directory "/var/openproject/pgdata" has group or world access
2020-01-08 21:50:51.686 UTC [226] DETAIL:  Permissions should be u=rwx (0700).
2020-01-08 21:50:51,776 INFO exited: postgres (exit status 1; not expected)

Пробная версия 3:

Обновленное изображение с разрешением pgdata через точку входа и снова генерирует фатальную ошибку: Файл "/ var / openproject / pgdata / PG_VERSION" отсутствует.

Журналы Cloudwatch:

LOG:  skipping missing configuration file "/var/openproject/pgdata/postgresql.auto.conf"
2020-01-08 22:12:52.404 UTC [228] FATAL:  "/var/openproject/pgdata" is not a valid data directory
2020-01-08 22:12:52.404 UTC [228] DETAIL:  File "/var/openproject/pgdata/PG_VERSION" is missing.
2020-01-08 22:12:52,494 INFO exited: postgres (exit status 1; not expected)

Невозможно определить проблему.

1 Ответ

0 голосов
/ 08 января 2020

И /var/openproject/pgdata, и /var/openproject/assets помечены как ОБЪЕМЫ в openproject Dockerfile. - https://github.com/opf/openproject-ce/blob/stable/8/Dockerfile

Соответствующий фрагмент из Dockerfile

<snip>
ENV APP_DATA_PATH /var/openproject/assets
ENV APP_DATA_PATH_LEGACY /var/db/openproject
<snip>
VOLUME ["$PGDATA", "$APP_DATA_PATH"]

Таким образом, ваша инструкция RUN, которая меняет разрешение, не сохранится после сборки ,

Вы можете использовать любой из следующих подходов, чтобы исправить это:

  1. Вы можете изменить entrypoint.sh сценарий openproject, чтобы исправить разрешения как часть запуска ,

  2. Вы можете создать два тома на хосте с соответствующими разрешениями и смонтировать их в контейнер openproject.


См. Следующий ответ для аналогичного обсуждения:

{ ссылка }

...