Если у вас есть разрешение на chmod -R 777 /var/project
, пожалуйста, сделайте это, тогда все в порядке, вы можете продолжить использовать user: node
.
Если у вас нет разрешения, почему бы не клонировать свой код в папку, на которую у вас есть разрешение, а затем повторить выше?
Если вы все еще настаиваете на том, что хотите сделать Dockerfile пригодным для более жесткой среды. Тогда вам, возможно, придется использовать gosu
.
Вам необходимо определить новый наследующий файл dockerfile от node:latest
, в файле dockerfile установить gosu .
Примерно так:
FROM node:latest
RUN GOSU_SHA=5ec5d23079e94aea5f7ed92ee8a1a34bbf64c2d4053dadf383992908a2f9dc8a \
&& curl -sSL -o /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.9/gosu-$(dpkg --print-architecture)" \
&& chmod +x /usr/local/bin/gosu \
&& echo "$GOSU_SHA /usr/local/bin/gosu" | sha256sum -c -
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
И, в entrypoint.sh, вам сначала нужно использовать gosu, чтобы изменить разрешение /foo
, а затем запустить проект nodejs.
Наконец, удалите command
в docker-compose.yml.
Может быть, быстрее изменить разрешение тома на хосте.