Файл Docker: Chmod в сценарии Entrypoint

Есть ли причина, по которой мне нужно использовать chmod +x в моем сценарии точки входа? Не похоже, чтобы Redis делал это в своем файле докеров (https://github.com/docker-library/redis/blob/109323988b7663bceaf4a01c3353f8934dfc002e/2.8/Dockerfile) для их сценария точки входа.

Докерфайл:

# Generic Docker Image for Running Node app from Git Repository
FROM    node:0.10.33-slim
ENV NODE_ENV production

# Add script to pull Node app from Git and run the app
COPY docker-node-entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

EXPOSE  8080
CMD ["--help"]

person AnDev123    schedule 03.12.2014    source источник


Ответы (2)


Redis не нужно этого делать, потому что в их скрипте уже есть флаг exec:

~/redis/2.8$ ls -l docker-entrypoint.sh 
-rwxrwxr-x 1 igor igor 109 Dec  3 23:52 docker-entrypoint.sh

если вы сделаете это для своего сценария docker-node-entrypoint.sh, вам также не понадобится chmod в Dockerfile.

Это возможно, потому что параметр git core.fileMode по умолчанию имеет значение true, поэтому исполняемый бит файла учитывается.

person ISanych    schedule 03.12.2014

Docker будет копировать файлы в контейнер с разрешениями их источника. Если вы удалите исполняемые биты Linux где-то в цепочке отправки в репозиторий кода или на хосте сборки, вам нужно будет снова добавить эти разрешения на выполнение. Я видел, что об этой проблеме чаще всего сообщают пользователи Windows, которые загружают код в файловую систему, которая не поддерживает биты разрешений Linux. Надеемся, что вскоре мы получим COPY --chmod решение, которое избавит от необходимости в дополнительном уровне.

person BMitch    schedule 01.08.2018
comment
COPY --chmod теперь возможно (начиная с Docker v20.10). См. здесь. Просто обратите внимание, что на данный момент это изменение еще не отражено в официальной документации. . - person Tobias; 28.06.2021