diff --git a/.gitignore b/.gitignore index 048c68b..87f3c62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +build/ target/ -.DS_Store \ No newline at end of file +.DS_Store diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..33af68b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,44 @@ +services: + # 開発用コンテナ + # プラグインのビルド(コンパイル)はこのコンテナ内で行います。 + development: + build: + context: . + dockerfile: ./docker/development/Dockerfile + container_name: mc-plugin-dev + working_dir: /app + volumes: + # ローカルのプロジェクトフォルダをコンテナの/appに同期します。 + # これにより、ローカルでコードを編集すると即座にコンテナ内に反映されます。 + - .:/app + # Gradleのキャッシュを永続化し、2回目以降のビルドを高速化します。 + - gradle_cache:/root/.gradle + # コンテナを起動し続け、`docker-compose exec`で中に入れるようにします。 + tty: true + stdin_open: true + + # Paperサーバーコンテナ + # 開発したプラグインをテストするためのマイクラサーバーです。 + paper: + build: + context: . + dockerfile: ./docker/paper/Dockerfile + container_name: mc-plugin-paper + ports: + - "25565:25565" # Minecraftサーバーのポート + volumes: + # developmentコンテナでビルドしたjarファイルを、サーバーのpluginsフォルダに配置します。 + - ./build/libs:/server/plugins + # ワールドデータなどを永続化します。 + - paper_data:/server + # サーバーの起動にはEULAへの同意が必要です。 + environment: + EULA: "TRUE" + # developmentコンテナが起動してからpaperが起動するように設定 + depends_on: + - development + +# Dockerが管理するデータ領域(ボリューム)の定義 +volumes: + gradle_cache: + paper_data: diff --git a/docker/development/Dockerfile b/docker/development/Dockerfile new file mode 100644 index 0000000..dfb965e --- /dev/null +++ b/docker/development/Dockerfile @@ -0,0 +1,5 @@ +# JAVAのプログラムを作る為の全部入りセットをインストール +FROM eclipse-temurin:21-jdk-jammy + +# 作業ディレクトリを作成 +WORKDIR /app \ No newline at end of file diff --git a/docker/paper/Dockerfile b/docker/paper/Dockerfile new file mode 100644 index 0000000..d2a5bd3 --- /dev/null +++ b/docker/paper/Dockerfile @@ -0,0 +1,22 @@ +# ----------------------------------------------------------------- +# docker/paper/Dockerfile +# ----------------------------------------------------------------- +# プラグインをテストするためのPaperサーバー環境を定義します。(1.21.0対応版) +# ----------------------------------------------------------------- + +# Minecraft 1.21 は Java 21 が必須のため、ベースイメージを更新 +FROM eclipse-temurin:21-jre-jammy + +# 必要なツールをインストール +RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/* + +# サーバーの作業ディレクトリを作成 +WORKDIR /server + +# Paperサーバーの最新ビルドを自動で取得するように修正 +ARG MC_VERSION=1.21 +RUN wget -O paper.jar https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION}/builds/$(wget -qO- https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION} | grep -o '"builds":\[[^]]*' | grep -o '[0-9]*' | tail -1)/downloads/paper-${MC_VERSION}-$(wget -qO- https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION} | grep -o '"builds":\[[^]]*' | grep -o '[0-9]*' | tail -1).jar + +# サーバーを起動するコマンド +# メモリ割り当てはPCのスペックに合わせて調整してください (例: -Xms2G -Xmx2G) +CMD ["java", "-Xms1G", "-Xmx1G", "-jar", "paper.jar", "--nogui"]