Я пытаюсь создать образ 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