💽

【簡単】GitHub Codespace内の開発環境でPostgresを使えるようにする

2023/04/10に公開

どんなときに何をしたいのか

GitHub CodespacesでWeb開発をするときに、開発環境にDBサーバがほしい。

どうやってするのか

  • Docker Composeを使ってPostgresサーバを立ち上げる。
  • Codespaces内の環境はそれ自体がコンテナであることに注意。コンテナ内にDockerコンテナを作成するDocker in Docker(dind)な環境にする。
  • dindはVS Codeの拡張機能VS Code Dev Containerを使って簡単に実現することができる。dindのための設定ファイルを自分で作る必要はなく、Microsoft公式の設定ファイルを使えば良い。

https://github.com/microsoft/vscode-dev-containers/tree/main/containers/docker-in-docker/.devcontainer

やってみよう

  1. GitHub CodespacesでBlankテンプレートからcodespaceを作成する。
  2. ターミナルを開いて以下のコマンドを入力し、Enterを押下する。[1][2]
shell
npx tiged microsoft/vscode-dev-containers/containers/docker-in-docker/.devcontainer ./.devcontainer
  1. codespaceをリビルドする。Ctrl + Shift + Pでコマンドパレットを開いてからCodespaces: Rebuild Containerと入力してEnterを押下する。しばし待機。
  2. リビルドが終わってcodespaceが再起動したら、dockerコマンドが使える状態になっている。ターミナルを開いてdocker-compose.ymlを作成する。
shell
touch docker-compose.yml
  1. docker-compose.ymlを以下のように編集する。
docker-compose.yml
version: '3.7'

services:
  postgres:
    image: postgres:latest
    restart: always
    environment:
      POSTGRES_USER: username
      POSTGRES_PASSWORD: password
      PGPASSWORD: password
      POSTGRES_DB: app
      TZ: "Asia/Tokyo"
    ports:
      - 5432:5432
    volumes:
      - postgres:/var/lib/postgresql/data

volumes:
  postgres:
  1. コンテナを起動する。ターミナルを開いて以下のコマンドを入力しEnterを押下する。
shell
docker compose up -d

終わり!

接続文字列はこうなります。

postgres://username:password@postgres:5432/app
脚注
  1. npxはインストール済み。 ↩︎

  2. tigeddegitの後継パッケージ。GitHubから一部フォルダだけダウンロードできる。 ↩︎

Discussion