0
0

More than 1 year has passed since last update.

Quickstart: Compose and Rails を WSL2で試して躓いた時のメモ

Last updated at Posted at 2022-12-23

モチベーション

業務でRailsを使うことが決まったので、そのためのキャッチアップをなと。
環境構築の際に、1からやるの面倒なのでQuickstart: Compose and Railsを使用してひな形をすぐに手に入れようとしたら思った以上に面倒だった。
なので、再度環境を作るといったときに、同じ轍を踏まないようにメモを残そうかなと思った次第です。

サイトにあるものから変数名すら変えていないので、初学者の方はもしかしたらコピペで対応できるかもです。(初学者がWSL2で開発するかどうかは知りません。。。

環境

OS: Microsoft Windows 10 Home
WSLのLinuxディストリビューションは以下の通り

$cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"

インストールしてから特に変更はないディストロ。

なお、基本的にVsCodeでWSL内に入り、Vscodeのターミナルからコマンド操作している。

以下躓いた部分を箇条書き。

build時にconnectionエラー

*エラー文のキャプチャ忘れてた。。
最初はdocker loginを試してみたが、治らず。

色々とググってみると、この記事がヒット。

この通りにやればbuildが問題なくできた。(もちろん、sourceで反映した後でコマンドを実行しました。)

docker-compose upにてDBコンテナが立ち上がらない。

以下、docker-compose up を実行時に出力されたlog

sampleapp-db-1   | fixing permissions on existing directory /var/lib/postgresql/data ... initdb: error: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted

調べてみると、色々難しそうな話が出てきます。が、docker-compose.ymlで指定している
./tmp/db/var/lib/postgresql/dataがそれぞれ違うuser_id,group_idであることが原因っぽいなと。
権限変える方法もいくつかありますが、手っ取り早くdocker-compose.ymlの記述を加えて対応。

services:
  db:
    image: postgres
    volumes:
        #  ./tmp/db: -> postgres_volumeへ変更
      - postgres_volume:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
# NEW!! volumeを指定
volumes:
  postgres_volume:

コメントした2か所を変更・追記すればDBコンテナが無事立ち上がった。ちなみに、指定した/var/lib/postgresql/dataの内容はpostgres_volumeに自動的に反映される(はず

volumeが無事できた場合は、以下のように表示されるので確認したいときは参考に

$ docker volume ls
DRIVER    VOLUME NAME
local     sampleapp_postgres_volume

雑記

初投稿でした。他記事と比べて内容薄いなーと感じましたし、色々とアウトプットしている人は改めてすごいなと。

0
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
0
0