Arch linux Docker 镜像构建挂起 - RUN pacman -Syyu --needed --noconfirm

Arch linux Docker 镜像构建挂起 - RUN pacman -Syyu --needed --noconfirm

我正在尝试使用 Dockerfile 构建自定义 Docker 映像。我使用的基准映像是这个:

l3iggs/archlinux

我的Dockerfile是这样的:

FROM l3iggs/archlinux:latest

COPY source /srv/visitor

WORKDIR /srv/visitor

RUN pacman -Syyu --needed --noconfirm &&
        pacman -S --needed --noconfirm cronie nodejs phantomjs &&
        printf "1.2.3.4 www.hahaha.org \n" >> /etc/hosts &&
        printf "*/2 * * * *       node /srv/visitor/visitor.js \n" >> cronJobs &&
        printf "*/5 * * * *       killall -older-than 5m phantomjs \n" >> cronJobs &&
        printf "0 0 * * * rm /srv/visitor/visitor-info.log \n" >> cronJobs &&
        crontab cronJobs &&
        rm cronJobs &&
        npm install

EXPOSE 80

CMD ["/bin/sh", "-c"]

现在,当它到达应该更新的“运行”部分时,它会挂起并输出此错误消息:

Step 3 : RUN pacman -Syyu --needed --noconfirm &&
 ---> Running in ae19ff7ca233
/bin/sh: -c: line 1: syntax error: unexpected end of file
INFO[0013] The command [/bin/sh -c pacman -Syyu --needed --noconfirm &&] returned a non-zero code: 1

有任何想法吗?

更新 1:

现在,我怀疑我的问题更多与“RUN”命令有关,而不是与容器内执行的“pacman -Syyu”有关。这实际上不应该造成影响,但显然是。

答案1

您缺少\跨多行构建命令的功能。运行命令应更类似于:

RUN pacman -Syyu --needed --noconfirm && \
        pacman -S --needed --noconfirm cronie nodejs phantomjs && \
        printf "1.2.3.4 www.hahaha.org \n" >> /etc/hosts && \
        printf "*/2 * * * *       node /srv/visitor/visitor.js \n" >> cronJobs && \
        printf "*/5 * * * *       killall -older-than 5m phantomjs \n" >> cronJobs && \
        printf "0 0 * * * rm /srv/visitor/visitor-info.log \n" >> cronJobs && \
        crontab cronJobs && \
        rm cronJobs && \
        npm install

不过,有几点需要注意:

相关内容