Dockerfile
将来的にOSが変わったりしてライブラリで詰まったりしたら嫌だなぁ、と思い開発環境をDocker
で整えることにした。
Docker
コンテナ作るやつ。カーネルはホストOSのものを使うからゲストOSが要らなくて計量らしい。
ライブラリ隔離だけならvenv
だけでも良いんだけど、MacとかLinuxに変わった時に入らないライブラリがあると面倒だから、初めからコンテナで開発環境を隔離することにした。
Dockerfile
コンテナの原型となる「イメージ」の設計図。
(https://docs.docker.jp/develop/develop-images/dockerfile_best-practices.html, accessed on 2021/04/15)
FROM python:3.9.4-buster WORKDIR /opt/app COPY requirements.txt /opt/app RUN pip install --upgrade pip RUN pip install -r requirements.txt
FROM | イメージのベースを指定 | |
---|---|---|
LABEL | イメージに付けるラベルの指定 | |
RUN | イメージの最上位のレイヤーで実行されるコマンドを設定 | |
CMD | コンテナ実行時のデフォルト処理を設定 | |
EXPOSE | コンテナがリッスンするポートを設定 | |
ENV | 環境変数の設定 | |
COPY | ローカルファイルをコンテナにコピー | |
ENTRYPOINT | コンテナ起動時の処理 | |
VOLUME | イメージ内にデータを永続的に保持する際に使用する | データベース、ストレージ、設定用ストレージetc... |
USER | 非ルートユーザへ変更 | |
WORKDIR | ワークディレクトリを設定 | コマンドを実行する場所 |
VSCodeとの連携
Docker
Remote - Container
コンテナ内でVSCodeを使っているかのようにできる。
marketplace.visualstudio.com
実際にアプリケーションとしてデプロイする時はマルチステージビルドしてイメージを計量にしたり、実行ユーザーを変更したり、環境変数を整えたりしてから使う。