見出し画像

Cloud Run で SBCL を動かすまで:動かない問題を解消させる。

前回の続き

Cloud Run で異常終了した原因を考えてみます。

出力されていたログです。
何が問題なのかサッパリわかりません。

2020-05-27 13:05:40.455 JST Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded.
2020-05-27 13:05:40.455 JST Help! ERROR-ERROR is 2 levels deep. Will try to reset the IO streams and disable debugger hooks.
2020-05-27 13:05:40.455 JST Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded.
2020-05-27 13:05:40.455 JST Help! ERROR-ERROR is 3 levels deep. Will try to THROW this thread to the toplevel.
2020-05-27 13:05:41.799 JST Container called exit(0).

「Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded」でググってみます。
いくつかヒットしますが、芳しくな模様。

"Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded." in REPL #413
SBCLの出力をパイプして使う場合の注意点 - sileのブログ

ここで二日ほど悩みました。

アレコレ試してみましたが、どこに原因があるのかサッパリわかりませんでした。

唯一わかったのは、Quicklisp の quicklisp/setup.lisp 内の ASDF でライブラリをロードするところでコケていました。
ただ、原因が全然終えませんでした。

完全に力不足です。

実行モジュールを実行する方式にしてみる。

いろいろ試す中、この方法を思いつきます。

なんか roswell というか sbcl でスクリプトを起動するのがダメなのでは? と感じるようになったためです。

これで現象は解消出来ました。

以下の様に ros build で実行モジュールを作成し、それを起動するように Dockerfile を変更しました

##### ################################################################
#####   build
##### ################################################################
USER appl-user
WORKDIR /home/appl-user/prj/gcp.sbcl.woo

RUN ros build gcp-sbcl-woo.ros


##### ################################################################
#####   gcp.sbcl.woo
##### ################################################################
USER appl-user
WORKDIR /home/appl-user/tmp

EXPOSE 8080

CMD ["/home/appl-user/prj/gcp.sbcl.woo/gcp-sbcl-woo"]

変更を Push し、ビルド&デプロイがオールグリーンになるのを確認します。

画像1

Cloud Run の「新しいリビジョンの編集とデプロイ」(黄色マーカーの部分)をクリックしビルドした Docker Image を実行します。

画像2

実行するフォームが表示されます。
コンテナのイメージのURL (黄マーカー部分)を latest に変更し、ページ下の「デプロイ」をクリックします。

画像6

画像3

デプロイの結果

無事デプロイがグリーンになりま

画像4

表示のある URL をブラウザで叩いてみます。

無事レスポンスを得られているようです。

画像5

おしまい。

次回はデプロイまでを Cloud Build で実施できるようにします。


この記事が気に入ったらサポートをしてみませんか?