Docker volumes label

Docker volumes に Label をつけ永続化

当ブログの Docker-compose.ynl

...
volumes:
  - ./blog:/blog:delegated
  - /blog/.cache
  - /blog/build
  - /node_modules
  - /blog/public
...

ググれば host の node_modules と Containerの node_modules を同期させない情報はありそのまま使用してた。

ちなみに Dockerfile

FROM node:18
RUN npm install -g gatsby-cli@4.5.2
WORKDIR /app
RUN npm install -g npm

この状況だと

初回 (Containerが生成されてない場合)

docker-compose up -d

で 立ち上げ

docker-compse ecec xxx bash yarn install

で node_modules を Install してから

yarn start

でサービス起動する。

これだと

docker-compose down

をすると コンテナが消え次回

docker-compose up -d

して再度

docker-compse ecec xxx bash yarn install

しなければならない。時間のムダ。。。。

まずは Container 側の node_modules を volumes で永続化する

services:
  gatsby:
    container_name: gatsby
    build: ./docker
    volumes:
      - ./blog:/blog:delegated
      #      - ../docker/package.json:/blog/package.json
      - /blog/.cache
      - /blog/build
      - node_volumes:/blog/node_modules
      - /blog/public
...
...
...
volumes:
  node_volumes:
    name: gatsby_blog_node_volumes

これで 初回だけ

docker-compse ecec xxx bash yarn install

することにより node_modules は永続かされる。

だが、

eocker volume purge

すればこの volume は削除される。

volumes に Label を付与、 purge から除外する

services:
  gatsby:
    container_name: gatsby
    build: ./docker
    volumes:
      - ./blog:/blog:delegated
      #      - ../docker/package.json:/blog/package.json
      - /blog/.cache
      - /blog/build
      - node_volumes:/blog/node_modules
      - /blog/public
...
...
...
volumes:
  node_volumes:
    name: gatsby_blog_node_volumes
    labels:
      keep: true

volumes を prune するときは

docker volume prune --filter "label!=keep"'

めんどいので alias を設定

dvp='docker volume prune --filter "label!=keep"'

dvp を打つことにより 不要な volumes だけが削除されてさっぱり!。

docker-compose.yml に ‘yarn start’

services:
  gatsby:
    container_name: gatsby
    build: ./docker
    volumes:
      - ./blog:/blog:delegated
      #      - ../docker/package.json:/blog/package.json
      - /blog/.cache
      - /blog/build
      - node_volumes:/blog/node_modules
      - /blog/public
    working_dir: /blog
    ...
    ...
    ...
    ...
    ...
    command: gatsby develop --host 0.0.0.0

これで

docker-compose up -d

で サービスが起動する。らくちん。

まぁ、

gatsby develop --host 0.0.0.0

なので ここは develop mode が起動するまでは多少時間がかかるが致し方ない。

サービスの起動は lazydocker 等で確認


おっさんWEBエンジニア奮闘記©2007 WEBDIMENSION