ことの発端
VSCode でC++の開発環境構築(Windows / MacOS) の記事を書いていて「何故にdocker使わない?」ということに気付き、やってみたら、更に簡単だったのでメモ。
Docker 未経験の方でも、Dockerさえインストールできれば1、この手順で進めれば大丈夫です。
これをキッカケに Docker って何者なのかを調べてみると良いかと思います。
手順
1. DockerFile を作成
ここで開発用のフォルダを作成し、まずは Dockerileを作成します。
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y build-essential gdb cmake
今回は docker-compose は使用しません。2
2. VSCodeからコンテナ内へリモート接続する
-
拡張機能 Remote - Containers : ms-vscode-remote.remote-containers をインストールします。
-
コマンドパレットが表示されるので今回は
Remote-Containers: Open Folder in Containers...
を選びます。
-
フォルダ選択画面が表示されるので、Dockerファイルが存在するフォルダを選択します。
この手順で、コンテナビルド→設定→起動→ログインが行われます。
3. 開発用の拡張機能をインストール
-
拡張機能 C/C++ : ms-vscode.cpptools をインストールします。
-
拡張機能CMake Tools : ms-vscode.cmake-tools をインストールします。
VSCodeはリモート環境毎に拡張機能をインストールするという素晴らしい仕様なので、既にローカルで拡張機能をインストールしていても、再度インストールがされているか確認をしてください。
4. 開発開始
この手順で、CMakeLists.txt
とmain.cpp
が生成されます。
5. ビルドとデバッグ実行
- [F7] でビルドが行われます。
- [CTRL] + [F5] でデバッグ実行が開始されます。
ブレイクポイントやら、スタックトレース、変数のウォッチなどは、一般的な開発環境と同じなので、ここでは割愛します。
その他
- VSCode を閉じれば、コンテナは自動的に停止します。
- 次回からは VSCode を起動して Recent からフォルダを選択すれば、自動的にコンテナを起動してくれます。
- VSCodeでgitの操作を行いたいなら、
Dockerfile
にgitを追加しましょう。 - gitを使う場合
.gitignore
にbuild
と.devcontainer
を追加しましょう。 -
Remote-Container
使えば、C++以外でもDockerを使って開発環境構築するのは良いかも。
-
VT-xを使っているミドルウエア(VMWareやVirtualBoxなど)をインストールしている場合はホスト環境にDockerを入れると、ネットワークドライバがコンフリクトしてアンインストールに苦労するかもなので、注意してください。 ↩
-
docker-compose.yml
を書いても良いのですが、MS謹製のRemote-Containers
がvolumeのbindとか面倒見てくれるので今回はこの子に甘えます。外部からのネットワークかインバウンドを想定したプログラムならVSCodeのターミナルで起動したプロセスがTCPをリスニングした場合、自動的にポートフォワードしてくれるので特に設定不要です。 ↩docker-compose.yml
を記述する必要がありますが、ここでは割愛します。