在Docker容器中运行大量shell命令的正确方法是什么?
是否有大量RUN
语句,或者将所有内容都放入.sh
文件并运行它会更好?
FROM php:latest
COPY install-composer /tmp/
RUN /tmp/install-composer
RUN rm /tmp/install-composer
我必须将我的shell脚本复制到我的容器中,运行它,然后手动处理它,这对我来说似乎有些尴尬。
是否无法在我的容器上下文中执行我的shell脚本而不将其复制到其中?
答案 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