docker と docker-compose
※TODO
docker のインストール
※TODO
docker-compose のインストール
※TODO
はじめの一歩:Python3の実行 in Docker コンテナ
開発環境と本番環境をできるだけ近い状態にするため、またプログラムの作成時期によって結果が変わることをできるだけ減らすため、 Docker を用いてコンテナで開発を進めることにする。
まずは、下記のファイルを Dockerfile
という名前で作成する。
FROM python:3.8.6 LABEL maintainer="dogwood008"
なお、 LABEL
は動作に影響を及ぼさないので、各自自分の情報に書き換えて欲しい。
次に、下記のコマンドで、ビルド(今回は実質的にはイメージをプルだけに留まる)する。
# イメージのビルド stock-trading-system$ docker build -t backtrader .
これを行うと、インターネット上から予めインストールを済ませたLinux環境をダウンロードすることができる。今回の場合は、Pythonのバージョン 3.8.6 を使えるように、セットアップ済みの環境(Dockerイメージ)をダウンロードしてくる。
次に、下記のコマンド1を入力2すると、イメージからコンテナを作成し、bashのターミナルにログインできる。この時、 -t backtrader
のオプションで指定している backtrader
はタグと呼ばれる識別子である。イメージを作成する際と、イメージからコンテナを作成する際、どのイメージかを識別するために用いられる。別の名前に変えても良いが、その際は当然、 docker run
する際にも同じタグを使用しなければならない。
# イメージからコンテナの作成と実行 stock-trading-system$ docker run --rm -i -t backtrader bash
試しに、 python
と入力し Enter キーを押すと、Pythonのインタラクティブシェルが立ち上がる。 1+1
と入力すると、結果として 2
が表示されるし、 'a' + 'b'
と入力すると、文字結合結果の ab
が表示される。
# bashでログインし、Python のインタラクティブシェルを起動する root@8396150c6d3d:/# python Python 3.8.6 (default, Oct 13 2020, 20:37:26) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 1+1 2 >>> 'a' + 'b' 'ab'
さて、次回は Pipenv によるバージョン固定機能を使いつつ、 backtrader をインストールしていく。
セキュリティについて
今回、bashでログインした際、表示されるプロンプトが root@ce2bceed647a:/#
のように root であることに気付いた人もいると思う。開発時はひとまず動けば良い、というスタンスのプロジェクトやチームならこれでも良いが、個人的にはあまり勧めない。root でのコンテナの実行には下記のようなリスクがあるようだ。本番稼働させる際には、特に注意されたい。
なお、Docker には、 Rootless モードというものも用意されているので、合わせて参考にしたい。