web-dev-qa-db-ja.com

docker-composeを使用してコンテナとホスト間でコードを同期する方法は?

これまで、ローカルLAMPスタックを使用してWebプロジェクトを開発し、サーバーに手動でデプロイしてきました。次のプロジェクトでは、dockerとdocker-composeを使用して、mariaDB、NGINX、およびプロジェクトコンテナーを作成し、開発とデプロイを簡単にします。

開発するとき、ホストマシン上のコードディレクトリをDockerコンテナと同期させたいです。私はそれが実行することによって達成できることを知っています

docker run -dt --name containerName -v /path/on/Host:/path/in/container

述べられているようにCLIで ここ 、しかし私はdocker-composev2ファイル内でそれをやりたいです。

私はdocker-composer.ymlファイルを次のようにしています。

version: '2'

services:
    db:
        #[...]
    myProj:
        build: ./myProj
        image: myProj
        depends_on:
            - db
        volumes:
            myCodeVolume:/var/www
volumes:
    myCodeVolume:

コンテナ内の/ var/wwwディレクトリをホストマシン(Ubuntuデスクトップ、macos、またはWindowsマシン)と同期するにはどうすればよいですか?

ご協力ありがとうございました。

8
pBuch

これはほとんど同じ方法で、作成ファイルのHost:containerキーのすぐ下でservices.myProj.volumesマッピングを行います。

version: '2'
services:
    ...
    myProj:
        ...
        volumes:
            /path/to/file/on/Host:/var/www

最上位のvolumesキーが削除されていること。

このファイルは次のように翻訳できます。

docker create --links db -v /path/to/file/on/Host:/var/www myProj

docker-composeが最上位のvolumesセクションを見つけると、他のコンテナを作成する前に、まずその下のキーをdocker volume createしようとします。これらのボリュームを使用して、コンテナー間で永続化したいデータを保持できます。したがって、ファイルを例にとると、次のように変換されます。

docker volume create myCodeVolume
docker create --links db -v myCodeVoume:/var/www myProj
4