大企業営業から未経験ITエンジニアを目指すブログ

アラサー大企業営業から未経験ITエンジニアを目指すブログ。日々学んだことを忘備録的に記します。

DockerにPython環境構築

前回の続き。

https://rintaro2019.hatenablog.com/entry/2021/05/05/201052

 

今回は下記を参考にDockerにPython環境構築します。 

 

※dockerはインストール済みの状態。

下記記事の内容に、requirements.txtにbeautifulsoup4だけ入れてやってみる。

https://techacademy.jp/magazine/47408

beautifulsoup4

 

①Docker Desktopを起動

②設定ファイルを作成したディレクトリで下記コマンド実行→ビルド&起動

docker-compose up -d --build

 

-dオプションについて

コンテナをバックグラウンド実行します。このオプションを付けない場合、コンテナ起動時に実行されるコマンドを実行した状態になり、例えばそのコマンドのコンソール出力が表示された状態になります。

https://knowledge.sakura.ad.jp/13795/

③optディレクトリができているので、コードを書いてその中にファイルを保存。

④下記コマンドでコンソールに入って、実行

docker-compose exec python3 bash

docker-compose exec {サービス名} {コマンド名}

 ⑤コンテナ停止と削除

docker-compose down

 

<上記に至るまでに調べたこと>

・dockerにpython

https://techacademy.jp/magazine/47408

https://qiita.com/reflet/items/4b3f91661a54ec70a7dc

・docker全般
https://knowledge.sakura.ad.jp/13795/
https://knowledge.sakura.ad.jp/14427/

 

pythonコンテナに、beautiful soupも入れ込みたい。

疑問〇スクレイピングをするには、HTML取得ライブラリも要るっぽいので、それも入れたい。何を入れたら良いのか。

requests

BeautifulSoupを使う場合には、だいたいこのモジュールも呼び出すことになる。
requestsは取得したHTTP構造から必要な情報(テキスト)を取得するのに使う。

pip install requests

https://web-kiwami.com/python-beautyfulsoup4.html

 

HTML の取得は requests を使い、HTML のパース処理を Beautiful Soup でやるのが基本的な使い方です。

https://qiita.com/Chanmoro/items/db51658b073acddea4ac

 

例えば Python から HTTP API を利用する場合、何も考えずにすぐ requests などの便利な HTTP クライアントモジュールを入れてしまいがちだが、冷静になって考えると「その程度の用途なら urllib.request で十分では」と思うことは少なくない。

 https://qiita.com/hoto17296/items/8fcf55cc6cd823a18217

 疑問〇dockerfileとかってどこに置いたらいいの?

https://www.metrocode.co/blog/post/use-docker-for-local-development

←ずばり答え!

 

疑問〇どのタイミングでコンテナ削除すればいいの?不要な時っていつ?

①DockerにPythonの実行環境を構築

まずはurllibだけでやってみることに。

urllibは付属しているのでわざわざインストールしなくても良いっぽい。

https://www.atmarkit.co.jp/ait/articles/1910/15/news018.html

 

■ちなみに、基本のイメージの作成方法は下記っぽい。
(1) サーバOSとか、基本のイメージを取得(CentOSとか) ※以降実施したコマンドは全てメモしておくこと!
(2)↑の中で、必要なツールをインストール
(3)実施したコマンドを写したDockerfileを作成
(4)作成したDockerfileを使ってDockerイメージを作成
(5)このDockerイメージを使用して、コンテナを起動

・サーバのOSは何が良いのか。
CentOSでよさそう。
https://wiki.python.org/moin/BeginnersGuide/Download

・webサーバアプリは何が良いのか。→ApacheかNginxか
https://qiita.com/kamihork/items/49e2a363da7d840a4149

実際には、Docker Hubで公開されているDockerイメージそのままではなく、そこに必要なミドルウェアやアプリをインストールして利用する場合が出てきます。

→DBサーバと分けた方が良いのか? ずばりの回答が以下。
https://teratail.com/questions/123306
やり方の例が以下。
https://qiita.com/nagi244/items/e5de6fc062fdcc5004e9

・dockerコンテナ・イメージって毎日使い終わるたびに削除すべきなの?

https://qiita.com/chroju/items/ce9cae248cc016745c66