ジャコ Lab

プログラミング関連のメモ帳的ブログです

Docker で立てていた PlantUML Server が立たなくなってしまいました

Docker
Docker

コンテナを整理していて、いざ再度立てようとしたら立たなくなってしまいました

エラー内容はこんな感じです。

plantuml  | 2024-09-20 13:32:09.000:INFO:docker-entrypoint:jetty start from /var/lib/jetty/jetty.start
plantuml  | [0.008s][warning][os,thread] Failed to start thread "GC Thread#0" - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached.
plantuml  | #
plantuml  | # There is insufficient memory for the Java Runtime Environment to continue.
plantuml  | # Cannot create worker GC thread. Out of system resources.
plantuml  | # An error report file with more information is saved as:
plantuml  | # /var/lib/jetty/hs_err_pid7.log

docker-compose.yml

version: "3.8"

services:
  plantuml:
    image: plantuml/plantuml-server:jetty
    container_name: plantuml
    restart: always
    environment:
      PLANTUML_LIMIT_SIZE: 8192
    ports:
      - 8080:8080
docker-compose.yml はこんな感じです。たぶん普通・・・。

前回はいつ作ったコンテナだか忘れましたが、かなり前であることは確かです。

plantuml/plantuml-server:jetty はバージョン指定していないので、最近バージョンでは動かなくなってしまったことが想定されます。

Out of system resources とのことなので、ホストマシンに割り当てられてるメモリ不足とかそんなところでしょう・・・。

解決方法

いつもの如く ChatGPT に聞いてみました
ChatGPT の回答

1. コンテナに割り当てるメモリを増やす

2. Javaオプションを変更

3. ホストのリソースを確認

と回答をいただき、それぞれ試しましたがダメでした。

ChatGPT の回答2

1. JettyのバージョンやJavaバージョンの互換性を確認

ここで jetty の代わりに tomcat を使ってみて とか、 旧バージョンのイメージで試してみて と言われました。

v1.2023.x 版の最終バージョンで試す

version: "3.8"

services:
  plantuml:
    image: plantuml/plantuml-server:jetty-v1.2023.13
    container_name: plantuml
    restart: always
    environment:
      PLANTUML_LIMIT_SIZE: 8192
    ports:
      - 8080:8080

結果変わらず

plantuml  | 2024-09-20 13:44:07.000:INFO:docker-entrypoint:jetty start from /var/lib/jetty/jetty.start
plantuml  | [0.007s][warning][os,thread] Failed to start thread "GC Thread#0" - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached.
plantuml  | #
plantuml  | # There is insufficient memory for the Java Runtime Environment to continue.
plantuml  | # Cannot create worker GC thread. Out of system resources.
plantuml  | # An error report file with more information is saved as:
plantuml  | # /var/lib/jetty/hs_err_pid7.log

v1.2022.x 版の最終バージョンで試す

version: "3.8"

services:
  plantuml:
    image: plantuml/plantuml-server:jetty-v1.2022.14
    container_name: plantuml
    restart: always
    environment:
      PLANTUML_LIMIT_SIZE: 8192
    ports:
      - 8080:8080

お!

plantuml  | 2024-09-20 13:46:43.000:INFO:docker-entrypoint:jetty start from /var/lib/jetty/jetty.start
plantuml  | 2024-09-20 13:46:44.672:INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 11.0.14+9
plantuml  | 2024-09-20 13:46:44.771:INFO :oejdp.ScanningAppProvider:main: Deployment monitor [file:///var/lib/jetty/webapps/]
plantuml  | 2024-09-20 13:46:48.178:INFO :oejss.DefaultSessionIdManager:main: Session workerName=node0
plantuml  | 2024-09-20 13:46:48.274:INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1573f9fc{PlantUML,/,[file:///tmp/jetty/jetty-0_0_0_0-8080-ROOT_war-_-any-9231709587729611091/webapp/, jar:file:///tmp/jetty/jetty-0_0_0_0-8080-ROOT_war-_-any-9231709587729611091/webapp/WEB-INF/lib/codemirror-5.63.0.jar!/META-INF/resources],AVAILABLE}{/var/lib/jetty/webapps/ROOT.war}
plantuml  | 2024-09-20 13:46:48.297:INFO :oejs.AbstractConnector:main: Started ServerConnector@6ad3381f{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
plantuml  | 2024-09-20 13:46:48.348:INFO :oejs.Server:main: Started Server@433d61fb{STARTING}[11.0.7,sto=5000] @4920ms

http://localhost:8080 にアクセスしてみましたが、無事起動できたみたいです!

まとめ

メモリ少ないんだよなぁ・・・というかメモリスロットが2個しかない