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

时间:2017-02-27 04:03:53

标签: docker dockerfile

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

是否有大量RUN语句,或者将所有内容都放入.sh文件并运行它会更好?

例如,这就是我现在所拥有的:

FROM php:latest

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

我必须将我的shell脚本复制到我的容器中,运行它,然后手动处理它,这对我来说似乎有些尴尬。

是否无法在我的容器上下文中执行我的shell脚本而不将其复制到其中?

1 个答案:

答案 0 :(得分:2)

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

这是我使用的RUN长{/ p>

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