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 し、ビルド&デプロイがオールグリーンになるのを確認します。
Cloud Run の「新しいリビジョンの編集とデプロイ」(黄色マーカーの部分)をクリックしビルドした Docker Image を実行します。
実行するフォームが表示されます。
コンテナのイメージのURL (黄マーカー部分)を latest に変更し、ページ下の「デプロイ」をクリックします。
デプロイの結果
無事デプロイがグリーンになりま
表示のある URL をブラウザで叩いてみます。
無事レスポンスを得られているようです。
おしまい。
次回はデプロイまでを Cloud Build で実施できるようにします。
この記事が気に入ったらサポートをしてみませんか?