初めに
本記事は以下のものを参考にしています。
目的
Docker、Gradleを使用したJavaの開発環境の構築を行います。
事前準備
本記事では、VSCodeとDockerを事前にインストール必要があるのでインストールをしてください。
以下からそれぞれインストールを行ってください。
使用環境
VSCode
Docker
Java11
Gradle7
環境構築手順
環境構築手順は、以下の手順で行います。
手順1 : 開発環境の構築
手順2 : Gradleでプロジェクトの作成
手順3 : デバッグを行えるようにする。
手順1 : 開発環境の構築
手順1では以下のことを行います。
(1) 最低限のファイル・フォルダを作成
(2) Dockerfileの作成
(3) docker-compose.ymlの作成
(4) Dockerイメージの作成・コンテナの起動
(1) 最低限のファイル・フォルダを作成
以下のshを任意の場所で実行してください。
#!/bin/bash
echo -n "任意のプロジェクト名を入力してください:"
read PROJECTNAME
mkdir $PROJECTNAME
touch $PROJECTNAME/Dockerfile
touch $PROJECTNAME/docker-compose.yml
#devcontainer関連を作成
mkdir $PROJECTNAME/.devcontainer
touch $PROJECTNAME/.devcontainer/devcontainer.json
mkdir $PROJECTNAME/src
#VSCodeを起動
cd $PROJECTNAME
code .
本記事では、プロジェクト名を「Java_App」で作成しています。
以下のようなファイル・フォルダが作成されるはずです。
(2) Dockerfileの作成
Dockerfileを以下のように修正してください。(コピペでOK)
FROM adoptopenjdk/openjdk11
RUN apt-get update
RUN apt-get -y install curl
RUN apt-get -y install zip
RUN curl -s "https://get.sdkman.io" | bash
RUN echo ". $HOME/.sdkman/bin/sdkman-init.sh; sdk install gradle" | bash
WORKDIR /java_project/
(3) docker-compose.ymlの作成
docker-compose.ymlを以下のように修正してください。(コピペでOK)
version: '3.6'
services:
java:
container_name: java
build: ./
tty: true
volumes:
- ./src:/java_project/
(4) Dockerイメージの作成・コンテナの起動
docker-compose build
docker-compose up -d
(5) 動作確認
まずはJavaが正常にインストールされているか確認しましょう。以下のコマンドを実行してください。
java --veriosn
以下のようなメッセージが表示されたら成功です。
openjdk 11.0.15 2022-04-19
OpenJDK Runtime Environment Temurin-11.0.15+10 (build 11.0.15+10)
OpenJDK 64-Bit Server VM Temurin-11.0.15+10 (build 11.0.15+10, mixed mode)
まずはGradleが正常にインストールされているか確認しましょう。以下のコマンドを実行してください。
gradle -v
以下のようなメッセージが表示されたら成功です。
------------------------------------------------------------
Gradle 7.4.2
------------------------------------------------------------
Build time: 2022-03-31 15:25:29 UTC
Revision: 540473b8118064efcc264694cbcaa4b677f61041
Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 11.0.15 (Eclipse Adoptium 11.0.15+10)
OS: Linux 5.10.76-linuxkit amd64
手順1はここまでです。お疲れ様です。
手順2 : Gradleでプロジェクトの作成
(1) Gradleプロジェクトの作成
(2) 動作確認
(1) Gradleプロジェクトの作成
アプリを開発するためにGradleプロジェクトの作成を行いましょう。
gradle init
順に、「2 => 3 => 1 => 1 => no =>[何も入力せずにEnter] => appを入力」 の順番です。
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Scala
6: Swift
Enter selection (default: Java) [1..6] 3
Split functionality across multiple subprojects?:
1: no - only one application project
2: yes - application and library projects
Enter selection (default: no - only one application project) [1..2] 1
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 1
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] no
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit Jupiter) [1..4] 1
Project name (default: java_project): [何も入力せずにEnter]
Source package (default: java_project): app
> Task :init
Get more help with your project: https://docs.gradle.org/7.4.2/samples/sample_building_java_applications.html
BUILD SUCCESSFUL in 49s
2 actionable tasks: 2 executed
成功すると「BUILD SUCCESSFUL」となり、以下のようにsrc直下にファイルやフォルダが作成されます。
(2) 動作確認
「./src/app/src/main/java/app/App.java」を見ると「Hello World!」を表示するプログラムになっているので実行して動作確認します。
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package app;
public class App {
public String getGreeting() {
return "Hello World!";
}
public static void main(String[] args) {
System.out.println(new App().getGreeting());
}
}
以下のコマンドを実行してください。
./gradlew run
以下のように「Hello World!」が表示されば成功です。(初回のみ少し実行に時間がかかります)
Downloading https://services.gradle.org/distributions/gradle-7.4.2-bin.zip
...........10%...........20%...........30%...........40%...........50%...........60%...........70%...........80%...........90%...........100%
> Task :app:run
Hello World!
BUILD SUCCESSFUL in 4m 20s
2 actionable tasks: 2 executed
手順2はここまでです。お疲れ様です。
手順3 : デバッグを行えるようにする。
(1) 拡張機能のインストール
(2) devcontainer.json の修正
(3) デバッグできるか確認
(1) 拡張機能のインストール
コンテナ内のソースをVSCodeで参照できるように、以下の拡張機能をインストールしてください。
(2) devcontainer.json の修正
「./.devcontainer/devcontainer.json」を以下のように修正してください。(コピペでOK)
{
"name": "java_gradle",
"workspaceFolder": "/java_project",
"dockerComposeFile": "../docker-compose.yml",
"settings": {
// Macの場合
"terminal.integrated.defaultProfile.osx": "/bin/bash"
},
"service": "java", //attachするコンテナはspringを指定
"extensions": [
"vscjava.vscode-java-pack", // JavaExtensionPack
"gabrielbb.vscode-lombok" //Lombok Annotations Support For VS Code
]
}
Windows(WSL)を使用している場合は以下で問題ないかと思いますが動作確認は実施していないので間違っていたらすみません・・・。
{
"name": "java_gradle",
"workspaceFolder": "/java_project",
"dockerComposeFile": "../docker-compose.yml",
"settings": {
// Windows(WSL)の場合(おそらく・・・動作確認はしていません。)
"terminal.integrated.defaultProfile.linux": "/bin/bash",
},
"service": "java", //attachするコンテナはspringを指定
"extensions": [
"vscjava.vscode-java-pack", // JavaExtensionPack
"gabrielbb.vscode-lombok" //Lombok Annotations Support For VS Code
]
}
(3) デバッグできるか確認
そして、「Reopen in Container Remote-Containers」 を選択してください。
以下のようにjavaコンテナ上のGradleプロジェクト(手順2で作ったもの)を参照できているはずです。
※Macを使用の場合は、Remote Containerの起動に時間がかかるようです。
https://www.keisuke69.net/entry/2021/09/15/104532
VSCodeの拡張機能は以下のものがインストールされているはずです。もし、インストールされていない場合は手動でもインストールできると思います。(Remote-Container上の拡張機能)
8行目でブレイクポイントつけて、Run|DebugのDebugで起動してみましょう。
開発環境の構築からDebug環境の構築まで完了です。お疲れ様です。
最後に
自分がつまづいたとことについて記載します。
「devcontainer.json」の"workspaceFolder","dockerComposeFile","service"は「docker-compose.yml」と同じものを指定しないとワークスペースが見つからないとなってしまいますのでご注意ください。
今回の構築したものは以下のgithubに公開しております。参考までに・・・
ここまでご覧いただきありがとうございます。