DockerでボリュームをマウントしてからDockerfile上でコマンドを叩きたいとき
今回はDockerを使っているときにボリュームをマウントしてからDockerfile上でコマンドを叩きたいときどのようにすれば良いのかについてお伝えしていきます。
DockerでボリュームをマウントしてからDockerfile上でコマンドを叩きたいとき
docker-compose.ymlに次の記載があったとします。
1 2 3 4 5 6 |
version: '3' services: test-app: volumes: - ./docker-test-app/test-app:/usr/local/test-app |
例えば、Vue.jsの場合について話させていただくと、docker-test-app/test-appの直下にpackage.jsonがあり、Dockerfileでpackage.jsonを元にnpm installをしたかったとしましょう。
何も考えずにDockerfileに
RUN npm install
のように記述すると、コンテナを作成してからボリュームをマウントするため、pacakge.jsonがないと言われてしまいます。
結論を言うと、Dockerfile中でCOPYを使ってpackage.jsonを認識させてあげるようにしましょう。
1 2 3 |
COPY ./test-web /usr/local/test-web WORKDIR /usr/local/test-web RUN npm install |
こうすることで、ある意味コンテナの作成中にボリュームをマウントさせたことになり、既存のpackage.jsonのファイルなどを元にコンテナを作成することができます。
やや伝わりにくかった部分もあると思いますが、かなり使えるテクニックなので覚えておきましょう。
終わりに
今回はDockerを使っているときにボリュームをマウントしてからDockerfile上でコマンドを叩きたいときどのようにすれば良いのかについてお伝えいたしました。
ディスカッション
コメント一覧
まだ、コメントがありません