2017-02-27 49 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