Google Cloud RunとArtifact RegistryでGeoServerを構築してみた

<br>

![](https://day-journal.com/memo/images/try-065_00.png)

<br>

### Google Cloud RunとArtifact RegistryでGeoServerを構築してみました :tada:  

コンテナを手軽にデプロイできる、[Google Cloud Run](https://cloud.google.com/run/)とGoogle Container Registryの進化版の[Artifact Registry](https://cloud.google.com/artifact-registry)を利用し、[GeoServer](http://geoserver.org)を構築してみました！

<br>

## Artifact Registryの設定
はじめに、Artifact RegistryでDockerイメージを登録します。

<br>

GCPコンソールでArtifact Registryに移動し「リポジトリを作成」をクリックします。
![画像](https://day-journal.com/memo/images/try-065_01.png)

リポジトリ名・形式・リージョン・暗号化を設定します。リポジトリ名は任意で形式はDockerとします。プレビュー版ですがnpmも登録できるようです。
![画像](https://day-journal.com/memo/images/try-065_02.png)

リポジトリが作成されたのを確認します。
![画像](https://day-journal.com/memo/images/try-065_03.png)

次に、GCPコンソールで別途Cloud Shellを起動します。
![画像](https://day-journal.com/memo/images/try-065_04.png)

認証設定をします。

```sh
gcloud auth configure-docker asia-northeast1-docker.pkg.dev
```

![画像](https://day-journal.com/memo/images/try-065_05.png)

登録したいDockerイメージをpullします。今回はGeoServerのDockerイメージ[kartoza/geoserver](https://hub.docker.com/r/kartoza/geoserver)を利用します。

```sh
docker pull kartoza/geoserver
```

![画像](https://day-journal.com/memo/images/try-065_06.png)

イメージにレジストリ名をタグ付けします。

```sh
docker tag kartoza/geoserver \
asia-northeast1-docker.pkg.dev/プロジェクトID/sample-docker/geoserver-image
```

イメージをArtifact Registryにpushします。

```sh
docker push asia-northeast1-docker.pkg.dev/プロジェクトID/sample-docker/geoserver-image
```

![画像](https://day-journal.com/memo/images/try-065_07.png)

リポジトリの中にDockerイメージが登録されているのを確認できます。
![画像](https://day-journal.com/memo/images/try-065_08.png)

これでArtifact Registryの設定は完了になります :thumbsup: 

<br>

## Google Cloud Runの設定
最後に、Artifact Registryに登録したDockerイメージをGoogle Cloud Runにデプロイします。

<br>

「Cloud Runにデプロイする」をクリックします。
![画像](https://day-journal.com/memo/images/try-065_09.png)

サービス名とリージョンを指定し「次へ」をクリックします。
![画像](https://day-journal.com/memo/images/try-065_10.png)

対象のコンテナを選択します。オプションのメモリとCPUの初期値が少ないので、GeoServerが動作する範囲まであげます。その他はデフォルト値で設定します。
![画像](https://day-journal.com/memo/images/try-065_11.png)

今回は一般公開用に設定し「作成」をクリックします。
![画像](https://day-journal.com/memo/images/try-065_12.png)

公開されると、詳細にURLが表示されるので「/geoserver」を追加してブラウザでアクセスしてみます。
![画像](https://day-journal.com/memo/images/try-065_13.png)

GeoServerが起動されているのを確認できます。
![画像](https://day-journal.com/memo/images/try-065_14.png)

<br>

#### Google Cloud RunとArtifact RegistryでGeoServerを構築できました :thumbsup: 

Google Cloud Runを利用することで、手軽にコンテナをデプロイすることができ、スケーリングもしてくれます！
今後は、独自でビルドしたコンテナでもトライしてみたいと思います:muscle: 

<br>

やってみたシリーズ :grinning:
<a href="https://day-journal.com/memo/tags/Try" target="_blank">tags - Try</a>
<a href="https://day-journal.com/memo/try-064" target="_blank">Google Kubernetes EngineとArtifact RegistryでQGIS Serverを構築してみた</a>
<a href="https://day-journal.com/memo/try-055" target="_blank">Serverless FrameworkでNode.jsのサーバーレスAPIをGCPにデプロイしてみた</a>
<a href="https://day-journal.com/memo/try-023" target="_blank">QGISとCloud SQLのPostgreSQL&PostGISを利用してジオデータを表示してみた</a>
<a href="https://day-journal.com/memo/try-018/" target="_blank">BigQuery GISとFlaskとMapbox GL JSを組み合わせて可視化してみた</a>

<br>
<br>

<a href="https://dayjournal.booth.pm" target="_blank"><img src="https://day-journal.com/memo/images/etc/book.png" alt="book"></a>