在我的公司,我们有一个usermod在 Dockerfile 附近运行的常见模式,以便直接获得权限。
例如:
FROM php:7.3-fpm-alpine
...
COPY . .
RUN usermod -u $USER_ID www-data && chown -R www-data:www-data $COMPOSER_HOME ./
USER www-data
CMD ["php-fpm"]
这样做的好处是容器不会以 root 身份运行,但由于缓存失效,几乎总是需要触发命令,并且在构建过程中可能需要很长时间。
我想要一个非常快速的 Dockerfile 构建,虽然我可以缓存之前的每一层,但这始终需要在源文件更改时执行,并且可能需要一段时间,具体取决于项目的文件数量。
我想知道是否有办法避免运行usermod和chown. 但是如果我可以在具有权限的情况下添加某个文件,或者这种方法已经被认为是最佳实践。
我还记得让我的主机用户在 docker 组中以便能够访问文件的模式?
除了提高构建速度之外,我还想避免注入主机的用户 ID。
有没有办法做到这一点?