質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

1回答

4789閲覧

docker runでrequirements.txtからpip installができない

ruuusaamarki

総合スコア468

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2019/06/06 01:58

編集2019/06/07 07:51

前提・実現したいこと

djangoの開発環境を作るということで
Dodker仮想化環境構築入門という書籍を参考に進めています。良書!わかりやすいです!
その288ページからのdjango環境構築の部分で詰まってしまいました。
状況を端的にまとめますと
docker runでrequirements.txtからpip installができないということになります。

発生している問題・エラーメッセージ

shell

1 2$docker-compose run web django-admin.py startproject webpj . 3Starting django_db_1 ... done 4Building web 5Step 1/7 : FROM python:3 6 ---> c52c55ffbc6f 7Step 2/7 : ENV PYTHONUNBUFFERED 1 8 ---> Using cache 9 ---> 6e797d3a1163 10Step 3/7 : RUN mkdir /code 11 ---> Using cache 12 ---> 5ea6c8b0f2e7 13Step 4/7 : WORKDIR /code 14 ---> Using cache 15 ---> 291d880a745e 16Step 5/7 : COPY requirements.txt /code/ 17 ---> Using cache 18 ---> cbf3968a39a8 19Step 6/7 : RUN pip install -r requirements.txt 20 ---> Running in 3f13d0039bab 21/bin/sh: 1: pip: not found 22ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 127 23(base) example:~/study/docker/docker仮想環境構築入門/django $pip -V 24pip 18.1 from /Users/example/study/Django/anaconda3/lib/python3.7/site-packages/pip (python 3.7) 25

該当のソースコード

Dockerfile

1 2FROM python:3 3ENV PYTHONUNBUFFERED 1 4RUN mkdir /code 5WORKDIR /code 6COPY requirements.txt /code/ 7RUN pip install -r requirements.txt 8COPY . /code/ 9

requirementstxt

1 2Django==2.0 3psycopg2 4

dockercomposeyml

1 2version: '3' 3services: 4 db: 5 image: postgres 6 web: 7 build: . 8 command: python3 manage.py runserver 0.0.0.0:8000 9 volumes: 10 - .:/code 11 ports: 12 - "8000:8000" 13 depends_on: 14 - db 15

試したこと

前述のソースにあるように pip自体はビルドコンテキスト上で認識されています。
またテスト用にディレクトリを作成し

pip install django

を実行したところこちらもインストールは成功しました。

気になっている点

◆1
書籍ではDockerfile,requirements.txt,docker-compose.ymlを作成した後
以下のコマンドを実行する流れになっております。
django-admin.py startproject webpj .

上記を実行すると当然ながら
not found django-admin.py
となります。

そこでdocker buildが必要なのかと思い実行してみたのですが
こちらもうまくいきませんでした。

◆2
Step 6/7 : RUN pip install -r requirements.txt
---> Running in 3f13d0039bab
/bin/sh: 1: pip: not found
ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 127
というエラーメッセージですがこれは macのshでpipを実行しようとして
pipが見つからないという意味でしょうか。

質問

エラーの原因、対処方法、調査すべきことなどご教授いただけましたら幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

/bin/sh: 1: pip: not found

ということですので、pipコマンドが、 python:3イメージの中に入っていないと言われていますね。

pip install django

が成功したとのことですが、これはMac上の話でしょうか?

docker-compose run web

だけ実行してみていただきたいです。

それでもだめなら、
コンテナ作成時に、 pipをインストールする処理を追加してみてください。

RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \ python get-pip.py RUN pip install -r requirements.txt

2のエラーについて

ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 127

というエラーメッセージですがこれは macのshでpipを実行しようとして
pipが見つからないという意味でしょうか。

いえ、これは、Dockerコンテナを作成する中で発生しているものなので、
FROM python:3のイメージの中の /bin/shとなります。

投稿2019/06/07 10:12

編集2019/06/07 10:12
tail12

総合スコア607

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruuusaamarki

2019/06/08 01:46

tail12さんご回答ありがとうございます。 pip install djangoはお察しの通りmac上で実行しました。 説明不足ですみません。 docker-compose run web を実行したところ同じようにnot foundが出てしまいましたので RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \ python get-pip.py を追記してみました。 今度はcurlがnot foundとなってしまいました。 何かおかしいなと考えていて ご回答いただいた以下の部分がヒントとなりました。 FROM python:3のイメージの中の /bin/sh なんとなくよくわからんとなっていた部分がまさにこれで ホストPCで実行されているコマンドなのかdockerコンテナの中で実行されているかが ごっちゃになっていました。 やはり原因はコンテナ内での実行失敗と思い 検索をしているとdockerfileの1行目、pythonバージョンが違うものがあったので カンでFROM python:3.7としてみたところ動きが変わりました。 pythonがそもそもpullできていなかったっぽいです。 無事djangoの立ち上げまで完了することができました。 情報提示漏れがあったにも関わらず的確なご指摘をいただけたことが 解決につながりました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問