Open6
環境構築系 メモ
目的
- 環境構築関連で調べたことのメモ
- docker,ビルドツール,パッケージ管理ツールetc.
- 他にも雑多にまとめる可能性あり
- トラブルシューティングの共有
<メモフォーマット>
viteとは
- フロントエンドビルドツール
- 速い,安い(タダ),上手い(HMR)
<トラブルシューティングフォーマット>
問題
- dockerでviteプロジェクトを
pnpm dev
で起動しようとしたところ,localhost:port_num
にアクセスしても立ち上がらなかった.
原因
- 調査中
解決方法- coming soon
問題
- 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系は軽量な代わりに色々デメリットがあるので基本使わない
参考
問題
- 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を全て行うことで解決.
- vite.config.tsの
server.host
をtrue
,'port:xxに' - Dockerfileに
EXPOSE xx
を記述 -
docker run -p yy:xx IMAGE
でコンテナ起動(ポートフォワードをつける) - ホストから
http://locahost:yy
にアクセスすると,
(2は,DockerfileのEXPOSEは単なるメタデータであるため不要かも.あっても困らないのでつけておくと親切)
参考
volume(docker)とは
- docker volume =コンテナ内でデータの永続化を行う方法
- コンテナはあくまで一時的であり,コンテナをkillすると全てリセットされる
- APIサーバーやフロントエンドサーバーはそれでも良いが,DBはデータを永続化する必要がある.
- データの永続化=マシンに何らかの方法でデータを保存する
- コンテナへのマウント
- コンテナにデータをマウントする方法は2つ
- ボリュームマウント
- dockerのボリューム機能を使用.ローカルマシンのdockerのアプリケーション配下に存在するボリュームをコンテナにマウント.←推奨
- バインドマウント
- ローカルマシンの任意のディレクトリを指定して,コンテナにマウントする方法.
- ボリュームマウント
- コンテナにデータをマウントする方法は2つ
備考
- ローカルのどこかに永続化データの本体が存在していて,この情報を確認したいとき.
$ docker volume ls # ボリュームの一覧表示
$ docker volume inspect volume_name #ボリュームの詳細情報を表示
参考
問題
- sail upで起動したposgresqlのDBサーバーにpgadminから接続したいが,失敗する
原因
不明
解決方法
pgadmiを再起動したら解決
問題
- vite x dockerにて,dockerコンテナで立ち上げた時にフロントのHMRが効かない
- pnpm devで開発環境を立ち上げた場合は,HMRが効く
原因 - 調査中
解決方法- coming soon