Open6

環境構築系 メモ

shimiharushimiharu

目的

  • 環境構築関連で調べたことのメモ
    • docker,ビルドツール,パッケージ管理ツールetc.
    • 他にも雑多にまとめる可能性あり
  • トラブルシューティングの共有

<メモフォーマット>
viteとは

  • フロントエンドビルドツール
  • 速い,安い(タダ),上手い(HMR)

<トラブルシューティングフォーマット>
問題

  • dockerでviteプロジェクトをpnpm devで起動しようとしたところ,localhost:port_numにアクセスしても立ち上がらなかった.

原因

  • 調査中

解決方法- coming soon

shimiharushimiharu

問題

  • DockerfileのベースイメージをFROM: node:20-alpineに指定.
  • 上記のDockerfileからイメージをビルド
  • docker run時に以下のエラーが発生
Cannot find module @rollup/rollup-linux-arm64-gnu.

原因

  • ベースイメージをnode-alpine系にしたことによるエラー.
  • macの環境と,dockerのベースイメージの方で不整合がある.
  • 結果的にdockerコンテナ起動時にパッケージ由来のエラーが発生してしまう

解決方法

  • node:xx-alpineの代わりにnode:xxを使う(普通のやつ)
  • alpine系は軽量な代わりに色々デメリットがあるので基本使わない

参考
https://zenn.dev/yuichisemura/articles/625fe1b16bac0b
https://engineering.nifty.co.jp/blog/26586
https://zenn.dev/jrsyo/articles/e42de409e62f5d

shimiharushimiharu

問題

  • vite + react +tyepscriptのプロジェクト
  • 普通のdockerイメージを作成
  • コンテナ起動
  • ローカルでブラウザからhttp://localhost:5173でアクセスしたがこのサイトにアクセスできませんERR_CONNECTION_REFUSEDが表示

原因
ローカルマシンからdocker内で立ち上がっている開発サーバーにアクセスできない

  • docker exec -it CONTAINER_ID bashで入ってhttp://xxをすると,ちゃんとhtmlが返ってくる.
  • ブラウザからhttp://localhost:xxにアクセスしてもダメだし,http://localhost

解決方法- coming soon
とりあえず以下の3を全て行うことで解決.

  1. vite.config.tsのserver.hosttrue,'port:xxに'
  2. DockerfileにEXPOSE xxを記述
  3. docker run -p yy:xx IMAGEでコンテナ起動(ポートフォワードをつける)
  4. ホストからhttp://locahost:yyにアクセスすると,

(2は,DockerfileのEXPOSEは単なるメタデータであるため不要かも.あっても困らないのでつけておくと親切)
https://qiita.com/enta0701/items/b872eef6d910908c0e6c#:~:text=Gemfile /app/Gemfile-,9. EXPOSEって必要?,いておいたほうが親切かもしれません。,-10. RUNと

参考
https://kyoruni.hatenablog.com/entry/vite-docker-localhost#section1

shimiharushimiharu

volume(docker)とは

  • docker volume =コンテナ内でデータの永続化を行う方法
    • コンテナはあくまで一時的であり,コンテナをkillすると全てリセットされる
    • APIサーバーやフロントエンドサーバーはそれでも良いが,DBはデータを永続化する必要がある.
    • データの永続化=マシンに何らかの方法でデータを保存する
  • コンテナへのマウント
    • コンテナにデータをマウントする方法は2つ
      • ボリュームマウント
        • dockerのボリューム機能を使用.ローカルマシンのdockerのアプリケーション配下に存在するボリュームをコンテナにマウント.←推奨
      • バインドマウント
        • ローカルマシンの任意のディレクトリを指定して,コンテナにマウントする方法.

備考

  • ローカルのどこかに永続化データの本体が存在していて,この情報を確認したいとき.
$ docker volume ls  # ボリュームの一覧表示
$ docker volume inspect volume_name #ボリュームの詳細情報を表示

https://docs.docker.jp/engine/reference/commandline/volume_inspect.html
https://qiita.com/shizen-shin/items/9dee8f4d33b8169f1478

参考
https://qiita.com/gounx2/items/23b0dc8b8b95cc629f32
https://zenn.dev/randd_inc/articles/84ac7de7f22800

shimiharushimiharu

問題

  • sail upで起動したposgresqlのDBサーバーにpgadminから接続したいが,失敗する

原因
不明

解決方法
pgadmiを再起動したら解決

shimiharushimiharu

問題

  • vite x dockerにて,dockerコンテナで立ち上げた時にフロントのHMRが効かない
  • pnpm devで開発環境を立ち上げた場合は,HMRが効く
    原因
  • 調査中

解決方法- coming soon