スキップしてメイン コンテンツに移動

投稿

Dockerのバージョンを取得

Windows上で動作するDockerでは確認すべきバージョンは下記の2つがあります。それぞれWindows PowerShell上で下記のコマンドを実行すれば取得できます。 Docker Desktop for Windows Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName,DisplayVersion | where {$_.DisplayName -like "Docker*"} レジストリから取得しています。 Docker Engine docker version 参考: https://stackoverflow.com/questions/60167878/how-to-check-the-docker-desktop-installed-version

Cloud SDKでPythonが見つからない

WIndows環境でpythonをバンドルしたCloud SDKをインストールしたのに、gcloudコマンドを実行するとなぜか下記のエラーが発生。 exec: python: not found cloud sdk ちなみにWindowsにはスタンドアローンのpythonはインストールしていません。 環境変数のCLOUDSDK_PYTHONにCloud SDKにバンドルされているpythonのパスを指定してみても状況変わらず。 結局力技で、環境変数のPathにCloud SDKにバンドルされているpythonのパスを直接指定して動かしました。 C:\Users\{ユーザ名}\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\bundledpython これでいいのかはわかりませんが、とりあず動いたのでよしとします。。。

Spring Boot 2.5でplain.jarが生成されてApp Engine上でのアプリケーションの実行に失敗した話

Google App EngineのJava 11環境でSpring BootアプリケーションをGradleを使ってデプロイしたところ、ローカル上では正しくページ表示されるのに、App Engine上にデプロイすると、なぜか、500エラーになるというトラブルに遭遇しました。 Google Cloudのログを調べてみると下記のエラーログを発見しました。Spring Boot系のクラスがjarが含まれていない! java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext さらに調べると、アップロードされたjarファイル名が xxxx-0.0.1-SNAPSHOT-plain.jar のようになっていて、 plain.jarがアップロードされていることが根本原因 でした(Google App EngineのGradle Pluginのデフォルトの設定だとfat jarではなく、plain.jarが選択されるようです)。 plain.jarは、Spring Bootの2.5から作成されるようになったので、それ以前のSpring Bootのバージョンでは問題は発生しません。 [解決法1] build.gradleのjarプラグインの設定を変更 build.gradleのjarプラグインの設定でplain.jarが生成されないうように修正して、fat jarがデプロイされるようになりました。 jar { enabled = false } こちらの記事に感謝。 https://zenn.dev/donchan922/articles/ea76614f72b15e [解決法2] appengine.stage.artifactを指定 こちらは、試していませんが、appengine.stage.artifactにデプロイするターゲットのファイルを指定する方法もありかも知れません。 # build . gradleのappenineの設定でデプロイする対象ファイルを指定。 appengine { stage { artifact = "build/libs/xxxx-0.0.1-SNAPSHOT.jar"

Gradleで使用するJDKのバージョン指定

GradleでSpring Bootを使ったjavaのプロジェクトをビルドしようとしたところ、下記のエラーが発生しました。 $ ./gradlew build > Task :compileJava FAILED > FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava' . > invalid source release: 11 どうやら、Javaコンパイラが11に対応していない模様。複数のJDKをインストール(8と16)していて、JDK 8の方をデフォルトにしていたため、Java 11のソースがコンパイルできないことが発覚。 gradle.properies に下記のように org.gradle.java.home で使用するJDKを指定して解決。 # org.gradle.java.home=使用するJDKのパス # 例えば筆者の環境ではこんな感じ。 org.gradle.java.home=C:/Program Files/AdoptOpenJDK/jdk-16.0.1.9-hotspot

firestoreでAuto Incrementフィールドを作成

FirestoreでAuto Increment Fieldを作成 Firestoreで連番となるフィールドの作成方法を紹介します。 肝はFirestoreのtransactionを使って原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)を保証することです。 汎用的に使えるgenerateSequenceNumber関数を作成してみました。 manage_collection: 連番を生成するターゲットcollectionを管理するcollection名 target_collection: 連番を生成するターゲットとなるcollection名 numberField: 連番を生成したいフィールド名 を渡して使います。 function generateSequenceNumber ( db , manage_collection , target_collection , numberField ) { const docRef = db . collection ( manage_collection ) . doc ( target_collection ) ; return db . runTransaction ( ( transaction ) => { return transaction . get ( docRef ) . then ( ( doc ) => { if ( ! doc . exists ) { transaction . set ( docRef , { [ numberField ] : 1 } ) ; return 1 ; } const newNumber = typeof doc . data ( ) [ numberField ] === 'undefined' ? 1 : doc . data ( ) [ numberField ] + 1 ; await transaction . update ( docRef , { [ numberField

Google Cloud Storageでクラウド上にあるファイルをローカルにあるファイルと同期させる方法

Linuxのrsyncコマンドのようにクラウド上にあるファイルをローカルにあるファイルと同期させるには、下記のコマンドを実行すればOKです。 gsutil -m rsync -r source gs://bucket/dest rsync: Linuxコマンドのrsyncのようにファイルを同期させるためのコマンド -m: multi-threaded/multi-processingの意味で並列で複数のファイルを同期させるためのオプション -r: recursiveの意味で再帰的にディレクトリ内のファイルを同期させるためのオプション

Spring Bootでwarファイルを作成する方法

Google App Engine JavaでSpring Boot + Gradleを使ってアプリケーションをデプロイする方法を調べた。 まずは、下記のオフィシャルを参考に、Gradle App Engine Pluginを導入 Using Gradle and the App Engine Plugin | App Engine standard environment for Java docs | Google Cloud MavenでSpring Bootアプリケーションを作成する方法 https://cloud.google.com/appengine/docs/standard/java11/building-app/writing-web-service Spring Bootアプリケーションを作成→Gradle App Engine Pluginを導入 下記の記事の方が参考になりました。 https://blog.uoneweb.net/2021/09/04/695/ https://zenn.dev/donchan922/articles/ea76614f72b15e