以前から、IntelliJにはDockerを扱うDocker integration
プラグインが存在しましたが、久しぶりに触ったら随分扱いやすくなっていました。
ちょうどHaskellの実行環境を構築する必要があったので、導入してHaskellで"Hello world"するまで、手順をまとめてみます。
実行環境
ソフトウェア | バージョン |
---|---|
IntelliJ community edition | 2017.3 |
docker for mac | 18.03.1-ce-mac65 |
Docker integration の導入
Preferences > Plugins > Install JetBrains plugin を開き、docker integration
と入力すると、対象が表示されます。
インストール済みなのでボタンが表示されませんが、右側のウィンドウに"Install"ボタンがあるので導入します。
Dockerへの接続
プラグインの導入後、Dockerクライアントへの接続を設定します。
Preferences > Build,Execution,Deployment > Docker を開き、+ボタンをクリックして接続設定を追加します。
Docker for macを利用しているのであれば、設定を追加した時点で接続設定は構築されます。(すごい便利)
以前はsocketで接続設定を書いていたんですが、随分と改良されました。Dockerのソケットはデフォルトではunix:///var/run/docker.sock
になるので、Docker for macを利用していない方はそちらを設定すれば大丈夫です。
正常に接続できていれば、ウィンドウ下部にConnection successful
と表示されます。
Docker管理用GUIを表示し、Imageをpullする
この時点で、IntelliJからDockerのImageのpullや、Containerの管理が可能になります。
command + shift + a から dockerのツールウィンドウを開きます。
起動中・停止中のContainerや、取得済みのImageを一覧できます。新しくImageをpullする場合は、Image
を選択後、一番左上のボタンをクリックします。
デフォルトではdocker-hubのレジストリが選択されています。今回はそのままでいいので、Repository
に必要なImageのリポジトリ名を入力します。
新たにContainerを起動する場合は、対象のImageを右クリックしてCreate Container
から作成できます。
Run時にDocker Container上で実行する
Run/Debug Configurations を開き、Container上で実行するConfigrationを書いていきます。左上の+ボタンをクリックし、Docker > Docker Imageを選択します。
Server
には"Dockerへの接続"項で設定した接続を指定し、ImageIDやコンテナ名を設定していきます。
コードを変更した時は即時Conainer側にも反映されるようマウント設定を書く必要があるので、Bind mounts
にマウント設定を記述し、加えてCommand line options
にWorkingDirectoryのオプションを設定しておくと良いです。
Command
に実際に実行したいコマンド(今回ならsandbox.hsをrunghcする)を記述します。最終的に実行されるコマンドがCommand preview
に表示されるので、コンソールで実現する際にどのようなコマンドが等価なものであるか確認できます。
設定が完了したら、OK
をクリックして設定を適用し、実行してみましょう。
無事実行されました。
まとめ
DockerだけでなくDockerComposeなどにも対応しているので、ますますIntelliJから離れられなくなりそうです。
さくっと新しい言語を試したいとき、環境構築で苦しみたくないのは全エンジニアの願いですね。