はじめに
現在、Web系自社開発企業への転職を目標にポートフォリオを作成中。
Dockerを活用してLEMP環境を構築し、Laravel+VuejsでWebアプリケーションの開発を行っております。
Dockerコンテナのnode.jsのバージョンを変更させるために、Dockerfileを編集した際に
Dockerfileの変更がコンテナに反映されないという問題で少しつまづいたので、記録として残します。
目次
やりたいこと
Dockerfileを編集して、DockerコンテナのNode.jsのバージョンを変更したい
やったこと
Dockerfileを編集
変更前
# install Node.js
COPY --from=node:10.22 /usr/local/bin /usr/local/bin
COPY --from=node:10.22 /usr/local/lib /usr/local/lib
変更後
# install Node.js
COPY --from=node:16.13 /usr/local/bin /usr/local/bin
COPY --from=node:16.13 /usr/local/lib /usr/local/lib
コンテナの停止
docker compose stop
コンテナの作成・起動
docker compose up -d
Node.jsのバージョンを確認
docker compose exec app node -v
v10.22.0
Dockerfileの変更が反映されなかった
原因
Dockerfileを変更する前のイメージを参考にしてDockerコンテナを作成、起動したから
解説
DockerコンテナはDockerイメージを参考にして作成される
そして、このDockerイメージはDockerfileを参考にして作成されるため
Dockerfileの変更をDockerコンテナに反映させるためには、Dockerイメージの作成から実行する必要がある
解決策
buildしてDockerイメージを作成
docker compose build
Dockerコンテナを作成、起動
docker compose up -d
Node.jsのバージョンを確認
docker compose exec app node -v
v16.13.0
無事、Dockerfileの変更がコンテナに反映された