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オプションについて
コンテナをバックグラウンド実行します。このオプションを付けない場合、コンテナ起動時に実行されるコマンドを実行した状態になり、例えばそのコマンドのコンソール出力が表示された状態になります。
③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
HTML の取得は requests を使い、HTML のパース処理を Beautiful Soup でやるのが基本的な使い方です。
例えば Python から HTTP API を利用する場合、何も考えずにすぐ requests などの便利な HTTP クライアントモジュールを入れてしまいがちだが、冷静になって考えると「その程度の用途なら urllib.request で十分では」と思うことは少なくない。
疑問〇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コンテナ・イメージって毎日使い終わるたびに削除すべきなの?