Некоторый фон ...
Я пытаюсь создать Docker образ для блога Ghost. Я просто добавляю один модуль: адаптер хранения, чтобы изображения размещались на S3 вместо локальной файловой системы (настройка по умолчанию).
В README плагина адаптера хранения , инструкции по установке должны скопировать модуль в рабочий каталог приложения:
npm install ghost-storage-adapter-s3
mkdir -p ./content/adapters/storage
cp -r ./node_modules/ghost-storage-adapter-s3 ./content/adapters/storage/s3
, и это работает - но только внутри контейнера. Я хочу выполнить эти шаги в сборке Docker, чтобы при перезапуске моего контейнера я не потерял эти изменения.
Проблема
В моем файле Docker у меня есть:
FROM ghost:3
RUN npm install ghost-storage-adapter-s3
RUN mkdir -p ./content/adapters/storage
RUN cp -r ./node_modules/ghost-storage-adapter-s3/ ./content/adapters/storage/s3
и выдает эту ошибку: cp: cannot create directory './content/adapters/storage/s3': No such file or directory
Когда я делаю шаг назад и пытаюсь создать один каталог за раз и проверить, что он был создан, то есть
RUN ls ./content
RUN mkdir ./content/adapters
RUN ls ./content/adapters
Я получаю эту ошибку:
Step 8/10 : RUN ls ./content/adapters
---> Running in c55848f39bb4
ls: cannot access './content/adapters': No such file or directory
The command '/bin/sh -c ls ./content/adapters' returned a non-zero code: 2
Как возможно, что "такого каталога не существует" после того, как я его только что создал?
Я пытался установить разрешения chmod при создании папки mkdir -m 777 ./content/adapters
и обновлении владельца до текущего пользователя (root): RUN chown -R root ./content
, но без эффекта.
Мне не удалось заставить его хотя бы собрать, изменив префиксы каталога ./
, но это помещает / content в приложение root, что не там, где нужно. Когда я указываю полный путь /var/lib/ghost/content/adapters/storage
, я получаю ту же ошибку. Кажется, это проблема с разрешениями, но я не знаю.
Любая помощь будет принята с благодарностью.