コンテンツにスキップ

Dockerfileを作成してVSCodeでアタッチする

DockerとGithubActionsを利用して、各種ビルドを自動化する方法まとめ。

DockerはWindows版をインストール
ビルドしたり起動したりする処理はVSCodeをメインに使用します。

Dockerfile

まずは、Dockerfileを利用してイメージを作成します。
イメージとは、コンテナを作るための設計書のようなもので
同じ構成のコンテナを量産したり、他のPCやサーバーで同じ環境を簡単に作れます。

このイメージを作るために必要なのが Dockerfileで
このファイルに各種コマンドを記述することで、イメージを作成することができます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
FROM python:3.7-slim
USER root

RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt-get install -y curl
RUN apt-get update && apt-get install -y git
RUN apt-get install -y vim less
RUN pip install --upgrade pip

ADD requirements.txt /work_dir/
WORKDIR /work_dir
RUN pip install -r requirements.txt

イメージを作るときは、0からつくるというより
すでにある土台から、必要な設定などを付け足す形で作ります。

サンプルの場合は、Python3.7の基本的な構成が入ったものを使用します。

コマンドは、

FROM ベースとなるコンテナ名
RUN Linuxのコマンドを実行
ENV 環境変数を指定
ADD コンテナにファイルを追加
WORKDIR コンテナ実行時のフォルダを指定

を使用して、必要な環境設定を作成します。

コンテナは、そのままだと完全に独立した(切り離された)環境になるので、
pip install で requirements.txt を利用してインストールしたい場合
ファイルが存在しないので実行できません。
こういった、環境構築に必要なデータも、イメージ作成時に合わせてパッケージしておきます。

1
2
3
usd-core
pytest
nbconvert

今回の requirements.txtの中身はこんなかんじで
Usdを使えるようにしています。

イメージビルド

Dockerfileを作成したら、イメージビルドをして、正しく構築できるか確認します。

VSCodeから Docker Images: Build Image...
を選択し、

イメージ名を指定して実行します。

問題なくビルドが完了すると、DockerのImagesに
Dockerfileをビルドした結果のイメージが追加されます。

タブを開いて、latest を右クリック、Runを実行すると

コンテナを起動することができました。

起動したコンテナを右クリック、 Attach Visual Studio Code をクリックして

フォルダーを開く を選択します。
ここで開くフォルダーは、Attachしたコンテナのフォルダになります。

試しにルートディレクトリを指定して、OKを押すと

コンテナ内のフォルダが表示されます。

Dockerimageの ADD requirements.txt /work_dir/ で追加された
requirements.txt も含まれているのがわかります。

pip install も正しく実行され、コンテナ内の環境でコードが書けるようになりました。