[Docker] docker-composeのvolumesでコンテナ・ホストのファイルを同期する

最近dockerにハマっているkinです。

docker-composeでvolumesの記事を書いていきます。

volumesを設定する

volumesを設定すると、コンテナ内にホストのファイル、ディレクトリをマウントすることができます。

マウントすることによって、コンテナ内で変更した内容を、ホスト側にリアルタイムで同期することができます。

これがめっちゃ便利です。

volumesを設定せずにコンテナ内でファイルの作成・変更などを行っても、コンテナを削除すると、変更も一緒に削除されますので、再びコンテナを立ち上げても、また最初から変更をしないといけません。

僕は、新しい言語を勉強する時に、ホスト環境を汚したくないので、dockerを使って環境構築をしています。

その時にvolumesを利用しているので、その例をあげたいと思います。

例として、node.jsの環境をdockerで作っていきます。

まず、以下のようなディレクトリ構成にします。

ディレクトリ構成

index.jsにnode.jsのコードを書くという程です

Dockerfile

node.jsを実行するための環境設定をします。

docker-compse.yml

 

上記のファイル設定をすると、docker-compose upでコンテナを立ち上げたときに、npm initコマンドが走り、node.jsの環境がコンテナ内で作られます。

ホストのディレクトリ内を見てみと、

となっており、ホスト側にもpackage.jsonが作成されています。

このように、コンテナ内で作った・変更した内容をホスト側で保持しておくために、volumesを使います。

コンテナ内に入る

今回の場合、node.jsのファイルを動かしたい時には、コンテナ何に入って、node index.jsを実行します。

 

これで、ホスト環境を全く汚さずにnode.jsの環境構築ができました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA