Сборка образа Docker висит на "pacman -S ..."

Я пытаюсь создать образ Docker из официального образа Arch Linux. Это то, что я сделал до сих пор:

Я вытащил официальный образ Arch Linux:

docker pull base/archlinux

Я написал этот "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"]

Я хочу, чтобы контейнер запускался из командной строки, чтобы я мог работать в интерактивном режиме и подключаться к нему.

Теперь я получаю эту ошибку во время построения изображения:

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

Что меня смущает, так это то, что база данных пакетов обновлена ​​правильно, а базовая система обновлена ​​и зависает при попытке установить три пакета вручную.

Есть идеи?

1 ответ

Решение

Ну, я вообще не знаю Арча, но если вы сделаете это:

RUN pacman-db-upgrade

И затем запустите это, чтобы обновить ваши текущие пакеты:

RUN pacman -Syyu --noconfirm

Возможно, вы только что обновились pacman и любые другие инструменты, которые касаются базы данных пакетов, чтобы при следующем запуске pacman команда...

RUN pacman -S --noconfirm nodejs phantomjs cronie

... происходит сбой, потому что база данных пакета не была обновлена ​​установленными в данный момент инструментами. Я подозреваю, что вы хотите изменить порядок тех RUN заявления:

RUN pacman -Syyu --noconfirm
RUN pacman-db-upgrade
RUN pacman -S --noconfirm nodejs phantomjs cronie
Другие вопросы по тегам