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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

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

pip

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

Q&A

解決済

1回答

15495閲覧

Dockerfileでのpipがうまくいかない

SatoKenta

総合スコア38

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

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

pip

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

0グッド

0クリップ

投稿2019/06/23 11:34

編集2019/06/23 12:19

###質問内容

Dockerコンテナ内でpythonのモジュールを追加インストールして使用したいのですが、実行時にモジュールをインポートできず、うまくいきません。
実行したpythonのコードと、Dockerfileは以下の通りです。

python

1#test.py 2 3import jinja2 4 5#処理は省略

Dockerfile

1FROM python 2RUN pip3 install jinja2 3COPY ./test.py /root 4ENTRYPOINT ["/usr/bin/python3", "-u", "/root/test.py"]

このファイルをもとにコンテナを作成すると、特にエラーなくjinja2がインストールされているように見えます。

bash

1root@debian:~/build# docker build -t test . 2Sending build context to Docker daemon 791kB 3Step 1/4 : FROM python 4 ---> 34a518642c76 5Step 2/4 : RUN pip3 install jinja2 6 ---> Running in 4e3322deac27 7Collecting jinja2 8 Downloading https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl (124kB) 9Collecting MarkupSafe>=0.23 (from jinja2) 10 Downloading https://files.pythonhosted.org/packages/98/7b/ff284bd8c80654e471b769062a9b43cc5d03e7a615048d96f4619df8d420/MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl 11Installing collected packages: MarkupSafe, jinja2 12Successfully installed MarkupSafe-1.1.1 jinja2-2.10.1 13Removing intermediate container 4e3322deac27 14 ---> e8651ec39d7b 15Step 3/4 : COPY ./tset.py /root 16 ---> 22a08e06a59d 17Step 4/4 : ENTRYPOINT ["/usr/bin/python3", "-u", "/root/test.py"] 18 ---> Running in 0885728190a3 19Removing intermediate container 0885728190a3 20 ---> 42afd2a19cb2 21Successfully built 42afd2a19cb2 22Successfully tagged test:latest

しかし、いざコンテナを実行しようとすると、pythonでモジュールをインポートする段階でエラーになります。

bash

1root@debian:~/build# docker run 42af 2Traceback (most recent call last): 3 File "/root/test.py", line 1, in <module> 4 import jinja2 5ImportError: No module named 'jinja2' 6root@debian:~/build/page_gen#

なぜ、こうなってしまうのでしょうか、、、
なお、同等のコマンドをコンテナ外で実行したら、問題なく動くことを確認できています。

###追記

FROMをpythonではなくubuntuにして以下のようにしたところ、うまくいきました。

Dockerfile

1FROM ubuntu 2RUN apt-get update 3RUN apt-get install -y python3-pip 4RUN pip3 install jinja2

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

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

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

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

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

guest

回答1

0

自己解決

解決しました。
Docker hubのドキュメンテ―ションを参照して、pip3 install ... ではなくpip install ... にし、"/usr/bin/python3"ではなく"python"にしたらうまくいきました。

投稿2019/06/23 12:23

SatoKenta

総合スコア38

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問