Почему эта команда apt-get работает в одном контексте, а не в другом?

Я пытаюсь добавить пакет plpython в мой докер-контейнер (запустив образ Ubunutu), используя следующую команду (RUN - это команда docker, которую вы можете игнорировать, если не знаете Docker):

RUN apt-get install -y postgresql-plpython-$PG_MAJOR=$PG_VERSION

Однако это приводит к следующей ошибке:

E: Unable to locate package postgresql-plpython-9.4
E: Couldn't find any package by regex 'postgresql-plpython-9.4'
INFO[0005] The command [/bin/sh -c apt-get install -y postgresql-plpython-$PG_MA
JOR=$PG_VERSION] returned a non-zero code: 100

Однако, если я вставлю эту же команду в эту часть существующего Dockerfile (т.е. я добавлю строка postgresql-plpython-$PG_MAJOR=$PG_VERSION \, команда работает.

Я не очень разбираюсь в apt-get, поэтому кто-то может объяснить, почему пакет находится в контексте родительского Dockerfile, а не в моем Dockerfile? можно сделать, чтобы найти посылку?

1
задан 14 April 2015 в 18:22

2 ответа

Dockerfile базового изображения имеет следующие инструкции:

rm -rf /var/lib/apt/lists/*

Это очищает списки пакета, загруженные apt-get update. Вот почему Вы получаете ошибку. Для решения этой проблемы выполнитесь apt-get update снова в Dockerfile.

5
ответ дан 15 April 2015 в 04:22

Удостоверьтесь, что Вы связываете свое обновление и устанавливаете команды. Посмотрите чиновника документы Докера по вопросу. У докера есть различные проблемы с аннулированием слоя кэша, которое может бросить ошибки иначе.

RUN apt-get update && apt-get install postgresql-plpython-$PG_MAJOR=$PG_VERSION

можно также заставить вывод установки замолчать и очистить способные кэши для уменьшения изображения и размера кэша.

RUN apt-get update -qqy \
 && apt-get install -qqy \
 postgresql-plpython-$PG_MAJOR=$PG_VERSION \
 && rm -rf /var/lib/apt/lists/* /var/cache/apt/*
0
ответ дан 15 April 2015 в 04:22

Другие вопросы по тегам:

Похожие вопросы: