Depricated code in Dockerfile for Java language-specific guide
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
- issue の種類
- ドキュメント
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- docker, docker-compose, java, spring-boot
- 領域
- devops, documentation
調査の方向性
https://docs.docker.com/guides/java/ の Java ガイドから始め、特に抽出ステージと実行ステージに注目して Dockerfile を調べてください。コマンドをリンク先の Spring Boot Dockerfile に関するガイダンスと比較し、添付された Dockerfile を確認してください。ガイドに記載されたコマンドでイメージをビルドし、コンテナを起動できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Is this a docs issue?
- My issue is about the documentation content or website
Type of issue
Information is incorrect
Description
1. Depricated -Djarmode in Spring Boot 4.1+ (?3.5+)
Following the guide a command:
docker compose up --build
,throws an error:
=> ERROR [extract 2/2] RUN java -Djarmode=layertools -jar target/app.jar 1.0s
[extract 2/2] RUN java -Djarmode=layertools -jar target/app.jar extract --destination target/extracted:
0.939 Error: Unsupported jarmode 'layertools'
0.939
Dockerfile:53
RUN java -Djarmode=layertools -jar target/app.jar extract --destination target/extracted
2. Copying extracted files into the runtime image’s filesystem root
After solving the first error, ocсurs a second one:
=> CACHED [extract 2/2] RUN java -Djarmode=tools -jar target/app.jar ext 0.0s
=> ERROR [final 3/6] COPY --from=extract build/target/extracted/dependen 0.0s
[final 3/6] COPY --from=extract build/target/extracted/dependencies/ ./:
Dockerfile:83
81 |
82 | # Copy the executable from the "package" stage.
83 | >>> COPY --from=extract build/target/extracted/dependencies/ ./
84 | COPY --from=extract build/target/extracted/spring-boot-loader/ ./
85 | COPY --from=extract build/target/extracted/snapshot-dependencies/ ./failed to solve: cannot copy to non-directory: /var/lib/docker/buildkit/containerd-overlayfs/cachemounts/buildkit4075886367/lib
3. The container cannot start because of missed JarLauncher
After solving the second error, ocсurs a third one.
✔ Container spring-petclinic-server-1 Created 0.1s
Attaching to server-1
server-1 | Error: Could not find or load main class org.springframework.boot.loader.launch.JarLauncher
server-1 | Caused by: java.lang.ClassNotFoundException: org.springframework.boot.loader.launch.JarLauncher
server-1 exited with code 1
Docker desktop already has a registered container, but cannot start it.
Log: Error: Could not find or load main class org.springframework.boot.loader.launch.JarLauncher
Location
https://docs.docker.com/guides/java/
Suggestion
After all three changes container runs correct.
1. -Djarmode=tools with "--layers" instead of -Djarmode=tlayertools
The problem is use of depricated "layertools"
Remove support for the deprecated layertools jar mode #48568
Spring Boot / Reference / Packaging Spring Boot Applications / Container Images / Dockerfiles
Right line:
RUN java -Djarmode=tools -jar target/app.jar extract --layers --destination target/extracted
2. Add a workdir for application layers
Gordon's solution is from Spring documentation's example code:
The build fails while copying extracted files into the runtime image’s filesystem root, where they can collide with base-image paths such as /lib; I’ll isolate them under /application and retry.
# Line 68
# Keep the application layers separate from operating-system paths in the base image.
WORKDIR /application
3. Change the ENTRYPOINT
Gordon's solution is from Spring documentation's example code.
Change in the last line in Dockerfile.
From:
ENTRYPOINT [ "java", "org.springframework.boot.loader.launch.JarLauncher" ]
To
ENTRYPOINT [ "java", "-jar", "app.jar" ]
And rebuild the image.
P.S. Attached the final dockerfile in .txt format.
- 主要言語
- Markdown
- スター
- 4.7k
- フォーク
- 8.5k
- 平均マージ
- 1日 22時間
- マージ済み PR(30日)
- 148
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
docker/docs のほかの issue
-
[docs-scanner] Inconsistent terminology: 'nested organization' vs 'organization in the company'対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
[docs-scanner] SSO overview omits OAT as CLI authentication option対応中かも @dave123981 が 3 日前に担当しました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
メンテナーはふだん 1 日以内に返信
-
status/triage
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
greenelab/lab-website-template#357 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
PolicyEngine/givecalc#95 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
PolicyEngine/crfb-tob-impacts#132 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
PolicyEngine/cliff-watch#43 ·