[Docker/Python]Could not open requirements file: [Errno 2] No such file or directory: でDocker buildに失敗したときの対処法
はじめに
Dockerコンテナビルド時に、Pythonの各種ライブラリのインストールを、requirements.txtに書き出したものをインストールするようにしたところ、少しハマったのでメモします。
結論から言うと、requirements.txtをビルドしたコンテナ内にコピーした上で、pip installする必要がありました。
以下の順序であれば動きます。
# requirements.txtをコピー
COPY requirements.txt .
# pipアップグレード
RUN pip install --upgrade pip
RUN pip install --user -r requirements.txt
ディレクトリ構成
.
├── app
│ ├── Dockerfile
│ ├── requirements.txt
. .
├── docker-compose.yml
.
こんな感じの構成。
appはPython用のディレクトリで、requirements.txtには使うライブラリが記載されています。
docker-compose.yml
version: '3'
services:
(省略)
appserver:
build:
context: ./app/
Dockerfile
# ベースイメージ作成
FROM python:3.7
# pipアップグレード
RUN pip install --upgrade pip
RUN pip install --user -r requirements.txt
# 作業ディレクトリ指定
WORKDIR /workdir
# 公開ポート指定
EXPOSE 8080
ビルドすると、失敗
$ docker-compose build
すると、以下のエラーが出ました。
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'app/requirements.txt'
調べてみると、ビルドした直後のコンテナにはディレクトリに配置しているrequirements.txtは含まれていないため、ファイルが無いよと言われていました。そりゃそうだ感…
修正版
# ベースイメージ作成
FROM python:3.7
# requirements.txtをコピー
COPY requirements.txt .
# pipアップグレード
RUN pip install --upgrade pip
RUN pip install --user -r requirements.txt
# 作業ディレクトリ指定
WORKDIR /workdir
# 公開ポート指定
EXPOSE 8080
修正した上で$ docker-compose build
すると、うまくいきました。
ディスカッション
コメント一覧
まだ、コメントがありません