2017-02-27 48 views
0

什么是在Docker容器内运行大量shell命令的正确方法?在容器中运行shell脚本并删除它?

是否有大量的RUN报表,还是将所有内容全部放入.sh文件并运行它更好?

例如,这里就是我现在得到:

FROM php:latest 

COPY install-composer /tmp/ 
RUN /tmp/install-composer 
RUN rm /tmp/install-composer 

这似乎有点尴尬,我认为我有我的shell脚本复制到我的容器,运行它,然后手动处置。

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

回答

2

一种常见的方式是用长RUN语句运行(这会在图像中产生更少的图层)。

这是一个漫长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

+0

Oy公司,看起来坏坏地维护。为什么他们不会为此添加便利包装? – mpen