1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[PostgreSQL][Python]VSCにおけるWSL2でのPostgreSQL環境構築

Last updated at Posted at 2025-04-18

はじめに

OSやライブラリに影響されず、バージョン切り替えが容易な練習用DB環境を作成したく、VSCにおけるWSL2でのPostgreSQL環境構築に挑んだが、GPTや参考サイトなどを頼りにしても苦戦したため、どう対応したかログを残す。

想定環境

・OS:Windows 11
・Linux:Ubuntu 24.04
・Docker環境:参考資料[6]をもとに構築済み

実行手順

①パッケージのインストール

 WSL2上で、パッケージをインストールする。

sudo apt update
sudo apt install -y wget ca-certificates curl gnupg lsb-release

②Docker Engine のインストールと準備

WSL2上でDockerエンジンのインストール

# GPG鍵を登録(上書き確認で y)
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# リポジトリ追加(Ubuntu 24.04 "noble")
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  noble stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# パッケージ更新&インストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

③systemd を有効化

 WSL2上で、有効化していく。

sudo vi /etc/wsl.conf

 すでに以下の設定ができている場合は、編集不要。

[boot]
systemd=true

 Windows PowerShellで WSL を再起動する。

wsl --shutdown

④Docker サービスを起動

 WSL2上で、Dockerを起動する。

sudo systemctl start docker

⑤PostgreSQL用 docker-compose.yml を作成

 WSL2上で、ymlを作成する。

mkdir ~/pg-docker
cd ~/pg-docker
vi docker-compose.yml

 ymlは、以下を設定する。

docker-compose.yml
version: "3.8"

services:
 db:
   image: postgres:17(←希望するPostgresqlのバージョが17のとき)
   container_name: my-postgres
   restart: unless-stopped
   environment:
     POSTGRES_USER: postgres(←必要に応じて変更する)
     POSTGRES_PASSWORD: 自分で設定するパスワード
     POSTGRES_DB: 自分で設定したDB名
   ports:
     - "未使用のホストポート:5432"
   volumes:
     - postgres_data:/var/lib/postgresql/data

volumes:
 postgres_data:

⑥起動確認

 WSL2上で起動して、確認する。

cd ~/pg-docker
docker compose up -d

 状態を確認する。

docker ps

image.png

⑦Dockerを停止

 WSL2上で停止させる。

docker compose down

Conda仮想環境での稼働確認

①仮想環境構築

conda create -n dbtest python=3.12.8

②仮想環境の立ち上げ

conda activate dbtest

③確認用Pythonファイルを作成

test.py
import psycopg2

conn = psycopg2.connect(
    host="localhost",
    port=設定したホストポート番号,
    dbname="設定したDB名",
    user="設定したユーザ",
    password="設定したパスワード"
)

cur = conn.cursor()
cur.execute("SELECT version();")
print(cur.fetchone())
cur.close()
conn.close()

④確認用プログラムの実行

python 作成したプログラムの格納場所/test.py

image.png

次回起動時の流れ

# WSLを起動したら以下の手順
sudo systemctl start docker
cd ~/pg-docker
docker compose up -d

# 停止する際
docker compose down

DBを追加対応

上記で作成した以外のDBを追加したい場合、docker-compose.ymlに内容を追加して起動させる。

docker-compose.yml
version: "3.8"

services:
db:
  image: postgres:17(←希望するPostgresqlのバージョが17のとき)
  container_name: my-postgres
  restart: unless-stopped
  environment:
    POSTGRES_USER: postgres(←必要に応じて変更する)
    POSTGRES_PASSWORD: 自分で設定するパスワード
    POSTGRES_DB: 自分で設定したDB名
  ports:
    - "未使用のホストポート:5432"
  volumes:
    - postgres_data:/var/lib/postgresql/data
db2:
   image: postgres:17
   container_name: my-postgres2(←別の名前に変更)
   restart: unless-stopped
   environment:
     POSTGRES_USER: postgres(←必要に応じて変更する)
     POSTGRES_PASSWORD: 自分で設定するパスワード
     POSTGRES_DB: 自分で設定したDB名
   ports:
     - "未使用のホストポート:5432"
   volumes:
     - postgres_data_2:/var/lib/postgresql/data

volumes:
postgres_data:
postgres_data_2:(←volumes追加)

参考資料

[1]The PostgreSQL Global Development Group, 『PostgreSQL: The world's most advanced open source database』, https://www.postgresql.org/
[2]藤那花多, 『PostgreSQLの練習環境をDockerで作り、WSL2からアクセスする』, https://zenn.dev/fjnkt98/articles/b79eaf86b83b41
[3]katsujitakeda(Katsuji Takeda), 『WSL2-Ubuntu22.04でPostgresql環境構築』,https://qiita.com/katsujitakeda/items/0c29b1dbd8445a3d70ab
[4]Microsoft, 『WSL を使用してデータベースを追加または接続する』,https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-database
[5]Microsoft, 『systemd を使用して WSL で Linux サービスを管理する』,https://learn.microsoft.com/ja-jp/windows/wsl/systemd
[6]haveAbook(Wakana Arimoto), 『WSL2でDocker環境構築(Docker Desktop有料化対策)』,https://qiita.com/haveAbook/items/0d0ae20a19214f65e7cd

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?