私は次のコマンドを使用してplpythonパッケージをドッカーコンテナに追加しようとしています(Ubunutuイメージを実行しています)(Dockerを知らない場合は無視できるドッカーコマンドであるRUN):
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では見つかりませんか?パッケージを見つけるにはどうすればよいですか?
ベースイメージのDockerfileには次の指示があります。
rm -rf /var/lib/apt/lists/*
これにより、apt-get update
によってダウンロードされたパッケージリストがクリアされます。そのため、エラーが発生します。この問題を解決するには、Dockerfileでapt-get update
を再度実行します。
必ず更新コマンドとインストールコマンドをバンドルしてください。公式の Docker docs を参照してください。 Dockerには、キャッシュレイヤーの無効化に関するさまざまな問題があります。
RUN apt-get update && apt-get install postgresql-plpython-$PG_MAJOR=$PG_VERSION
また、インストール出力を無音化し、aptキャッシュをクリーンアップして、イメージとキャッシュサイズを最小化することもできます。
RUN apt-get update -qqy \
&& apt-get install -qqy \
postgresql-plpython-$PG_MAJOR=$PG_VERSION \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/*