GitHub Codespaces で PostgreSQL を動かすメモ
GitHub Codespaces で PostgreSQL を動かすメモです。
背景
仕事やプロトタイピングにおいて PostgreSQL を動かす環境に出会うことも多いですが、それぞれのシチュエーションでバージョンや OS などいろいろな組み合わせがあります。
そういうときに手元の環境でやるより、もしや GitHub Codespaces で作った方が作りやすいのではと考えたのでやってみます。
ひとまず GitHub Codespaces を起動

ベースはどんなリポジトリでもいいのですが、公式のシンプルなものを起動しましょう。
こちらを起動します。

起動しました。
Postgres をインストール
- PostgreSQL を Ubuntu に普通にインストール #Ubuntu - Qiita
- Ubuntu 20.04にPostgreSQLをインストールする方法 [クイックスタート] | DigitalOcean
これらの記事を参考に進めますが GitHub Codespaces に合わせた対応をします。
sudo apt update
ターミナルでこちらを実行し、
sudo apt install postgresql postgresql-contrib
こちらで PostgreSQL をインストールします。途中で Y/n が聞かれたら yes で進めます。

インストール中...

うまくインストールされました。
PostgreSQL 起動
実は、通常 systemctl で PostgreSQL 起動するわけですが
sudo systemctl start postgresql
"systemd" is not running in this container due to its overhead.
Use the "service" command to start services instead. e.g.:
service --status-all
こちらだと GitHub Codespaces では割り当てられていないようで service を使います。
service --status-all
で起動中のサービスを確認すると
[ ? ] binfmt-support
[ - ] cron
[ - ] dbus
[ ? ] hwclock.sh
[ - ] postgresql
[ - ] procps
[ - ] rsync
[ + ] ssh
[ - ] sysstat
[ - ] x11-common
まだ postgresql は起動してません。
sudo service postgresql start
で起動します。
service --status-all
で起動中のサービスを確認すると、
[ ? ] binfmt-support
[ - ] cron
[ - ] dbus
[ ? ] hwclock.sh
[ + ] postgresql
[ - ] procps
[ - ] rsync
[ + ] ssh
[ - ] sysstat
[ - ] x11-common
無事起動しました!
動作チェック
sudo su postgres
で postgres ユーザーに変更します。 rm: cannot remove '/usr/local/share/nvm/current': Permission denied とでるのは気にしなくて OK です。
psql
で PostgreSQL で入ります。
select version();
バージョンをチェックしてみます。
PostgreSQL 12.18 (Ubuntu 12.18-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit
(1 row)
という返答が来て無事動作していることが分かります。
なお PostgreSQL サーバーは、また GitHub Codespaces を再起動してしまうと、一旦停止してしまうので再起動して使います。
このあたりも本来であれば devcontainer.json あたりで起動時にサーバーを起こせるように対応するようにすればより良いので、今後やってみます。