1. 概要
- とりあえず何でもいいから手軽に Java を実行したい
- Docker、特に
docker-compose
が好き
そんな人のための記事。
2. 気を付けたこと
- 古過ぎる Docker イメージは使わない
- サイズがなるべく小さそうなイメージを使う
- ただし、
alpine
みたいなすっからかん過ぎるイメージは、後で困ることが多いので使わない
Docker image についての補足
以下の記事によると、 OpenJDK
の Docker イメージは非推奨になってしまったらしい。
上記を踏まえて、最近も更新されていそうな、 Eclipse temurin
という Docker イメージを使うことにした(*˘︶˘*)フフン
3. 前提条件
OSに、以下がインストールされていて、使用できる状態であること。
- docker
- docker-compose
使用した Docker image は以下の通り。
eclipse-temurin:22-jdk
4. ソースコード
以下のようにファイルを設置した。
directory構成
./<app_root_dir>
├── src/ # ここに .java ファイルとかを設置する
│ └── Main.java
├── Docekrfile
└── docker-compose.yml
Dockerfile
Dockerfile
# 使用する Docker image
FROM eclipse-temurin:22-jdk
# Ubuntu package 類のインストール
RUN apt -y update && apt -y upgrade
RUN apt -y install \
# For development and debug
bash curl vim net-tools zip \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# Docker container ログイン時の作業ディレクトリを指定
ARG workdir="working_dir"
WORKDIR /${workdir}
docker-compose.yml
docker-compose.yml
version: '3'
services:
java:
build:
context: .
dockerfile: ./Dockerfile
environment:
- TZ=Asia/Tokyo
# volumes を指定しておくことで、そのディレクトリ内の変更はLocal PC上にも反映されるようになる
volumes:
- .:/workdir
working_dir: /workdir
# Fix slow shutdown of container
init: true
5. 実行方法
あとは、 ./<app_root_dir>
内で以下のコマンドを実行すれば、 java を利用できる container 内にログインできる。
実行コマンド
$ docker compose build
$ docker compose run java bash
# 上記コマンドの実行成功すると、以下のようなプロンプトが表示される
/workdir#
src
以下に、おなじみの hello, world ! を実行するファイルを作成して、
Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
次に、以下のように実行する。
# コンパイル
/workdir# javac Main.java
# 実行
/workdir# java Main.java
Hello World!
これでOK!
新しい言語を覚える時にいつも厄介なのは、環境構築と実行、デバッグ方法を調べることなのだよね₍₍ (ง ˘ω˘ )ว ⁾⁾スヤッスヤッ