在容器中运行shell脚本并删除它?

在Docker容器中运行大量shell命令的正确方法是什么?

是否有大量的RUN语句,还是把所有的东西都放到一个.sh文件并运行它更好呢?

例如,这是我现在得到的:

 FROM php:latest COPY install-composer /tmp/ RUN /tmp/install-composer RUN rm /tmp/install-composer 

我似乎有点尴尬,我必须将我的shell脚本复制到我的容器中,运行它,然后手动处置它。

有没有办法只是在我的容器的上下文中执行我的shell脚本而不复制它?

一个常见的方法是用一个长的RUN语句来运行(这将在图像中产生更less的图层)。

这是我用过的一个很长的RUN

RUN \ apk add --update $RUN_DEP && \ rm -rf /var/cache/apk/* && \ mkdir -pv /run/nginx /config /data && \ chown 65534:65534 /config /data && \ ln -sv /dev/stdout /var/log/php-fpm.log && \ ln -sv /dev/stdout /var/log/nginx/access.log && \ ln -sv /dev/stderr /var/log/nginx/error.log && \ ln -svfn /config /usr/share/webapps/owncloud/config && \ ln -svfn /data /usr/share/webapps/owncloud/data && \ adduser nobody www-data