dockerでnpmを起動時に動かす

この記事は約2分で読めます。
スポンサーリンク

dockerのコンテナでnpmを自動実行しようとした際にうまくいかなかった。
その解消方法に以下のような形で解消を行なった。
Dockerfileに書いていた記述をdocker-composeファイルで処理するようにした。

  node:
    image: node:lts-alpine
    volumes:
      - ./src:/app
    working_dir: /app
    command: sh -c "npm i && npm run dev"

そもそもの原因は、ボリュームマウントをしたものに対してDockerfile内で処理を行ったことがよくなかった。

Dockerfileはコンテナのイメージの作成を行う。
その中でnpmのコマンドを叩いた場合、そのイメージ内でnpmのインストールを行う。
イメージを作成した後に、ボリュームマウントがされるので、そのインストールされたデータがマウントデータで上書きされてしまうのである。

それを回避するには、イメージを作成し、データマウントした後にコマンドを叩けるようにするということ。

つまりdocker-composeの方でコマンドを叩けば実装が可能ということである。

一つ注意点がある、Dockerfileではbuildされた場合にイメージファイルを作成、再作成するが、docker-composeで指定されている場合、dockerが立ち上がった際に毎回それが実行される。
つまり、npm installがその都度実行される。


コメント

タイトルとURLをコピーしました