🙌
【Volume Trick】Dockerでdocker compose downするとライブラリが消える件についての対処法
結論
- Volume Trickを使っている時にdocker compose downを使うとnpmパッケージの情報が消える
- ライブラリを再インストールする必要がある
- docker compose stopを使おう
具体例
FROM node:16.14.2-slim
RUN apt-get update && \
apt-get install -y locales git procps vim tmux
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP
ENV LANG ja_JP.UTF-8
ENV TZ Asia/Tokyo
WORKDIR /app
compose.yml
version: '3'
services:
app:
build: .
tty: true
ports:
- 8000:8000
volumes:
- .:/app
- /app/node_modules
- /app/node_modules
node_modules の内側にあるファイルだけは、ホストOS(Windows,macOS)とファイルを共有せず Dockerコンテナ上にのみ保存するという意味。
-
node_modules はインストールした npm パッケージの中身のコードが入っているディレクトリ
- これをホスト OS と共有すると、それぞれのパッケージについてホスト OS と Docker コンテナの両方にインストールされる
- パッケージをインストールする際時間がかかかる
- Docker コンテナ上にのみ保存する
- パッケージをインストールする際時間がかかかる
- これをホスト OS と共有すると、それぞれのパッケージについてホスト OS と Docker コンテナの両方にインストールされる
-
docker compose down でコンテナを破棄すると、コンテナ側にインストールされた npm パッケージの情報が失われる
-
コンテナを破棄することなく停止させる
- docker compose stop というコマンドを使えばOK
Discussion