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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

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

Docker

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

pip

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

解決済

Dockerfileでpython仮想環境にライブラリがインストールされない

takatoyo0903
takatoyo0903

総合スコア9

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

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

Docker

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

pip

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

1回答

0評価

0クリップ

196閲覧

投稿2022/04/13 01:52

Docker初心者です。
EC2上で稼働しているDjangoサービス(Apacheで稼働)をECS Fargateに載せ替えようとしています。

【ハマっているところ】
EC2ではPython仮想環境を作成してそこにpip installしたものを入れていました。
Amazonlinux2をベースにDocker For Windowsで対話形式で下記の同様の作業をしたところ、イメージが作成され正常に稼働したのでDockerfileで再現しようとしたところ下記作業のうち

pip install -r ~/requirements_python3_2.txt

が pip not foundになってしまいます。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Docker

★yumで必要なものをインストール bash-4.2# yum -y update && yum -y install systemd sudo vim tar less which shadow-utils procps wget unzip bash-4.2# wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python ★ec2-userを追加し ec2-userにsu bash-4.2# useradd "ec2-user" && echo "ec2-user ALL=NOPASSWD: ALL" >> /etc/sudoers ★apache その他インストール [ec2-user@bed0dd8f0ea3 /]$ sudo yum install -y httpd httpd-devel [ec2-user@bed0dd8f0ea3 /]$ sudo systemctl enable httpd.service [ec2-user@bed0dd8f0ea3 /]$ sudo yum install -y httpd-devel python3-devel gcc gcc-c++ ★pythonインストール [ec2-user@bed0dd8f0ea3 /]$ sudo yum install python3.7 python3-devel postgresql-devel httpd-devel -y [ec2-user@bed0dd8f0ea3 /]$ echo 'alias python=python3.7' >> ~/.bashrc [ec2-user@bed0dd8f0ea3 /]$ source ~/.bashrc [ec2-user@bed0dd8f0ea3 /]$ python --version Python 3.7.10 ★仮想環境インストール [ec2-user@bed0dd8f0ea3 /]$ sudo python3 -m pip install virtualenv [ec2-user@bed0dd8f0ea3 /]$ sudo python3 -m pip install source [ec2-user@bed0dd8f0ea3 /]$ python3 -m virtualenv ~/virtual_envs/tpr [ec2-user@bed0dd8f0ea3 /]$ python3 -m source ~/virtual_envs/tpr/bin/activate [ec2-user@bed0dd8f0ea3 /]$ . ~/virtual_envs/tpr/bin/activate (tpr) [ec2-user@bed0dd8f0ea3 /]$ pip install --upgrade pip Requirement already satisfied: pip in /home/ec2-user/virtual_envs/tpr/lib/python3.7/site-packages (22.0.4) ★以下のコマンドで仮想環境以下のsite-packageディレクトリにライブラリ関連のファイルが作成される。 (tpr) [ec2-user@bed0dd8f0ea3 ~]$ cp /tmp/requirements_python3_2.txt . (tpr) [ec2-user@bed0dd8f0ea3 ~]$ pip install -r ~/requirements_python3_2.txt ・・・アプリに必要なPGMをコピー等の作業

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

Dockerfileの記述は以下です


Dockerfile

FROM amazonlinux:2 # yum RUN yum -y update && yum -y install systemd sudo vim tar less which shadow-utils procps wget unzip lsof RUN yum install -y openssh-server openssh-clients RUN wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python RUN sudo yum -y install python-psycopg2 # ec2-user追加 パスワード無しでsu設定 RUN useradd "ec2-user" && echo "ec2-user ALL=NOPASSWD: ALL" >> /etc/sudoers # ユーザー変更 USER ec2-user WORKDIR /home/ec2-user # apache RUN sudo yum install -y httpd httpd-devel RUN sudo systemctl enable httpd.service # python3 RUN sudo yum install -y httpd-devel python3-devel gcc gcc-c++ RUN sudo yum install python3.7 python3-devel postgresql-devel httpd-devel -y # 仮想環境 RUN echo 'alias python=python3.7' >> ~/.bashrc RUN source ~/.bashrc RUN sudo python3 -m pip install virtualenv RUN sudo python3 -m pip install source RUN python3 -m virtualenv /home/ec2-user/virtual_envs/tpr RUN python3 -m source /home/ec2-user/virtual_envs/tpr/bin/activate RUN . /home/ec2-user/virtual_envs/tpr/bin/activate RUN echo 'source ~/virtual_envs/tpr/bin/activate' >> ~/.bashrc # 必要なツールインストール COPY ./requirements_python3_2.txt /home/ec2-user/requirements_python3_2.txt # 以下で site-packege内にファイルができる ※※※以下のコマンドが pip not found になる    ちなみに pip3 にするとインストールされるが、仮想環境のsite-package に入ってくれない RUN pip install -r /home/ec2-user/requirements_python3_2.txt

USER ec2-user で su ec2-user と同じ扱いになり、対話形式同様 pip install が可能だと思っているのですが
認識が間違っているのでしょうか?

対話形式で構築したコンテナをcommitしたものをECSFargateで起動すれば
アプリは稼働するのですが、運用の観点からできればCodebuildでDockerfile
をもとにイメージを作成したいと思っています。

Dockerfileによるイメージ作成で上記 pip install コマンドが pip not found
になってしまう原因と解決方法を教えていただきたいです。

・Python3.7
・上記作業でインストールしたライブラリ一覧

boto==2.49.0
certifi==2019.11.28
chardet==3.0.4
defusedxml==0.6.0
diff-match-patch==20181111
Django==2.2
django-appconf==1.0.3
django-cors-headers==3.2.0
django-crontab==0.7.1
django-import-export==2.0
django-maintenancemode==0.11.3
django-netfields==1.2.2
ecdsa==0.14.1
et-xmlfile==1.0.1
future==0.18.2
idna==2.8
ipaddress==1.0.23
IPy==1.0
jdcal==1.4.1
MarkupPy==1.14
mod-wsgi==4.7.0
netaddr==0.7.19
odfpy==1.4.0
openpyxl==3.0.2
psycopg2==2.8.4
psycopg2-binary==2.8.4
pyasn1==0.4.8
pycryptodome==3.9.4
python-dateutil==2.8.1
python-jose==3.0.1
pytz==2019.3
PyYAML==5.2
requests==2.22.0
rsa==4.0
six==1.13.0
sqlparse==0.3.0
tablib==0.14.0
urllib3==1.25.7
xlrd==1.2.0
XlsxWriter==1.2.6
xlwt==1.3.0

以上よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

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

Docker

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

pip

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