Construção de imagem do Docker trava no “pacman -S…”

4

Estou tentando criar uma imagem do Docker a partir da imagem oficial do Arch Linux. Estas são as coisas que tenho feito até agora:

PUXEI a imagem oficial do Arch Linux:

docker pull base/archlinux

Eu escrevi este "Dockerfile":

# Set base image
FROM base/archlinux:latest

# Fix mirrorlist file
#RUN rm /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist

# Update pacman and install packages
RUN pacman-db-upgrade
RUN pacman -Syyu --noconfirm
RUN pacman -S --noconfirm nodejs phantomjs cronie

# Make cronjobs
RUN echo "*/2 * * * *   node /srv/visitor/visitor.js" >> mycronjobs
RUN echo "*/5 * * * *   killall -older-than 5m phantomjs" >> mycronjobs
RUN echo "0 0 * * *     rm /srv/visitor/visitor-info.log" >> mycronjobs
RUN crontab mycronjobs
RUN rm mycronjobs

# Fix hosts file
RUN echo "192.92.13.243 www.lololol.gr"

# Copy app code
COPY . /srv/visitor

# Install app dependencies
RUN cd /srv/visitor
RUN npm install

EXPOSE 80
CMD ["/bin/bash"]

O que eu quero é que o contêiner inicie no prompt de comando, para que eu possa entrar no modo interativo e anexar a ele.

Agora, recebo este erro no momento da construção da imagem:

Step 3 : RUN pacman -S --noconfirm nodejs phantomjs cronie
 ---> Running in 30870b31aed6
error: failed to initialize alpm library
(database is incorrect version: /var/lib/pacman/)
error:   try running pacman-db-upgrade
INFO[0127] The command [/bin/sh -c pacman -S --noconfirm nodejs phantomjs cronie] returned a non-zero code: 255

O que me confunde é que parece que o banco de dados de pacotes foi atualizado corretamente, e o sistema básico foi atualizado, e ele trava ao tentar instalar três pacotes manualmente.

Alguma idéia?

    
por dsljanus 06.02.2015 / 16:21

1 resposta

3

Bem, eu não conheço Arch, mas se você fizer isso:

RUN pacman-db-upgrade

E, em seguida, execute isso para atualizar seus pacotes atuais:

RUN pacman -Syyu --noconfirm

Parece possível que você acabou de atualizar pacman e quaisquer outras ferramentas que toquem no banco de dados de pacotes, para que quando você executar o próximo comando pacman ...

RUN pacman -S --noconfirm nodejs phantomjs cronie

... falha porque o banco de dados de pacotes não foi atualizado pelas ferramentas atualmente instaladas. Eu suspeito que você queira reordenar as declarações RUN :

RUN pacman -Syyu --noconfirm
RUN pacman-db-upgrade
RUN pacman -S --noconfirm nodejs phantomjs cronie
    
por 08.02.2015 / 03:52