###質問内容
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

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。