この記事ではDocker環境でJavaを作成する手順をまとめています。
前提条件
- Docker Hubが使用できること
- Visual Studio Codeをインストールしていること
- VSCodeの拡張機能 Dev Containersをインストールしていること
ディレクトリ構成
workspace
├─.devcontainer
│ devcontainer.json
│
├─docker
│ docker-compose.yml
│
└─src
└─myapp
Main.java
DockerでJavaの実行環境を作成する手順
1. VSCode拡張機能「Dev Containers」の設定ファイルを作成する。
2. Docker構成ファイルを作成する。
3. Javaファイルを作成する。
4. VSCode拡張機能「Dev Containers」でDockerを作成、起動、接続する。
5. Dockerコンテナ内でJavaを実行する。
VSCode拡張機能「Dev Containers」の設定ファイルを作成する
「Dev Containers」を使うメリットを紹介します。
- Dockerコマンドを使わずにDockerコンテナの作成と接続ができる。
- Dockerコンテナ内でVSCodeの拡張機能を管理できる。
以上のように簡単な操作でDocker環境を構築することができるためかなり便利です。
それではDockerコンテナを作成するためにdevcontainer.jsonに必要なコードを書いていきましょう。
devcontainer.json
{
"name": "java",
"dockerComposeFile": ["../docker/docker-compose.yml"],
"service": "java",
"workspaceFolder": "/workspace",
"extensions": ["vscjava.vscode-java-pack"]
}
dockerComposeFileに起動時に読み込みたいdocker-compose.ymlを指定します。
workspaceFolderに接続時の階層を指定します。
extensionsに使用したい拡張機能のIDを追加します。
Docker構成ファイルを作成する
Dockerの構成ファイルを作成します。
docker-compose.yml
version: "3"
services:
java:
image: eclipse-temurin:17
container_name: javaApp
ports:
- 8000:8000
tty: true
volumes:
- ..:/workspace:cached
imageは推奨されているJDK 「eclipse-temurin」を使用する。
ttyをtrueにすることでコンテナは常に起動し続けるようになる。
volumesはworkspace以下をマウントするように設定
eclipse-temurin
Docker HubのOpenJDKがサポート終了となっているようです。今回は「eclipse-temurin」を使用しました。
詳細は以下の引用と公式サイトを見てください。
このイメージは正式に非推奨となっており、すべてのユーザーはできるだけ早く適切な代替イメージを見つけて使用することをお勧めします。他の公式イメージの代替例のいくつか (意図的または黙示的な優先ではなく、アルファベット順にリストされています):
https://hub.docker.com/_/openjdk
Javaファイルを作成する
Main.java
package src.myapp;
class Main{
public static void main(String[] args){
System.out.println("Hello");
}
}
コンテナ内で実行してHelloが表示されたらOK
VSCode拡張機能「Dev Containers」でDockerを作成、起動、接続する
VScodeを開いたらCTRL+Pでコマンドパレットを開き「>dev containers」を入力後に「コンテナをフォルダで開く」を選択します。
少し待つとコンテナを作成後に接続してくれます。
Dockerコンテナ内でJavaを実行する
接続が完了したらデバッグしてみましょう。
VSCodeでデバッグする場合は拡張機能「Extension Pack for Java」に含まれる「Debugger for Java」を使用します。
ターミナルに「Hello」と表示されれば成功です。
最後に
Dockerでおすすめの書籍を紹介します。
Dockerとは何か?動く仕組みのところからイラストや図を使ってわかりやすく説明してくれます。
ハンズオンも豊富で、WordPressやMySqlのコンテナを作成していきます。
基本的なDockerの知識、コマンドはこちらの書籍で学ぶことができるため、これからDockerを学びたい初心者におすすめです。