Назад | Перейти на главную страницу

Сборка образа 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

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

Любые идеи?

Ну, я совсем не знаю Arch, но если вы сделаете это:

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