🙌

【Volume Trick】Dockerでdocker compose downするとライブラリが消える件についての対処法

2023/05/18に公開

結論

  • Volume Trickを使っている時にdocker compose downを使うとnpmパッケージの情報が消える
    • ライブラリを再インストールする必要がある
  • docker compose stopを使おう

具体例

FROM --platform=linux/x86_64 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 コンテナ上にのみ保存する
  • docker compose down でコンテナを破棄すると、コンテナ側にインストールされた npm パッケージの情報が失われる

  • コンテナを破棄することなく停止させる

    • docker compose stop というコマンドを使えばOK

Discussion