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
1★yumで必要なものをインストール 2bash-4.2# yum -y update && yum -y install systemd sudo vim tar less which shadow-utils procps wget unzip 3bash-4.2# wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python 4★ec2-userを追加し ec2-userにsu 5bash-4.2# useradd "ec2-user" && echo "ec2-user ALL=NOPASSWD: ALL" >> /etc/sudoers 6★apache その他インストール 7[ec2-user@bed0dd8f0ea3 /]$ sudo yum install -y httpd httpd-devel 8[ec2-user@bed0dd8f0ea3 /]$ sudo systemctl enable httpd.service 9[ec2-user@bed0dd8f0ea3 /]$ sudo yum install -y httpd-devel python3-devel gcc gcc-c++ 10★pythonインストール 11[ec2-user@bed0dd8f0ea3 /]$ sudo yum install python3.7 python3-devel postgresql-devel httpd-devel -y 12[ec2-user@bed0dd8f0ea3 /]$ echo 'alias python=python3.7' >> ~/.bashrc 13[ec2-user@bed0dd8f0ea3 /]$ source ~/.bashrc 14[ec2-user@bed0dd8f0ea3 /]$ python --version 15Python 3.7.10 16★仮想環境インストール 17[ec2-user@bed0dd8f0ea3 /]$ sudo python3 -m pip install virtualenv 18[ec2-user@bed0dd8f0ea3 /]$ sudo python3 -m pip install source 19[ec2-user@bed0dd8f0ea3 /]$ python3 -m virtualenv ~/virtual_envs/tpr 20[ec2-user@bed0dd8f0ea3 /]$ python3 -m source ~/virtual_envs/tpr/bin/activate 21[ec2-user@bed0dd8f0ea3 /]$ . ~/virtual_envs/tpr/bin/activate 22 23(tpr) [ec2-user@bed0dd8f0ea3 /]$ pip install --upgrade pip 24Requirement already satisfied: pip in /home/ec2-user/virtual_envs/tpr/lib/python3.7/site-packages (22.0.4) 25★以下のコマンドで仮想環境以下のsite-packageディレクトリにライブラリ関連のファイルが作成される。 26(tpr) [ec2-user@bed0dd8f0ea3 ~]$ cp /tmp/requirements_python3_2.txt . 27(tpr) [ec2-user@bed0dd8f0ea3 ~]$ pip install -r ~/requirements_python3_2.txt 28・・・アプリに必要なPGMをコピー等の作業
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
Dockerfileの記述は以下です
Dockerfile
1FROM amazonlinux:2 2# yum 3RUN yum -y update && yum -y install systemd sudo vim tar less which shadow-utils procps wget unzip lsof 4RUN yum install -y openssh-server openssh-clients 5RUN wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python 6RUN sudo yum -y install python-psycopg2 7 8# ec2-user追加 パスワード無しでsu設定 9RUN useradd "ec2-user" && echo "ec2-user ALL=NOPASSWD: ALL" >> /etc/sudoers 10 11# ユーザー変更 12USER ec2-user 13WORKDIR /home/ec2-user 14 15# apache 16RUN sudo yum install -y httpd httpd-devel 17RUN sudo systemctl enable httpd.service 18 19# python3 20RUN sudo yum install -y httpd-devel python3-devel gcc gcc-c++ 21RUN sudo yum install python3.7 python3-devel postgresql-devel httpd-devel -y 22 23 24# 仮想環境 25RUN echo 'alias python=python3.7' >> ~/.bashrc 26RUN source ~/.bashrc 27RUN sudo python3 -m pip install virtualenv 28RUN sudo python3 -m pip install source 29RUN python3 -m virtualenv /home/ec2-user/virtual_envs/tpr 30RUN python3 -m source /home/ec2-user/virtual_envs/tpr/bin/activate 31RUN . /home/ec2-user/virtual_envs/tpr/bin/activate 32RUN echo 'source ~/virtual_envs/tpr/bin/activate' >> ~/.bashrc 33 34# 必要なツールインストール 35COPY ./requirements_python3_2.txt /home/ec2-user/requirements_python3_2.txt 36# 以下で site-packege内にファイルができる 37※※※以下のコマンドが pip not found になる 38 ちなみに pip3 にするとインストールされるが、仮想環境のsite-package に入ってくれない 39RUN 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
以上よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/13 04:52