🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

1239閲覧

ホストとコンテナ間でファイルのバインド・マウントがうまくいかない

yuki84web

総合スコア1857

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/09/20 03:47

[実行環境]

  • Windows 10 Home edition
  • Docker Toolbox

[ディレクトリ構造]

./hoge | +- ./html +- ./php7.2 | +- dockerfile | +- php.ini +- docker-compose.yml

[docker-compose.yml]

version: '3' services: php: build: context: ./php7.2 dockerfile: dockerfile volumes: - ./php7.2/php.ini:/usr/local/etc/php/php.ini - ./html:/var/www/html ports: - 8000:80 links: - mysql:mysql mysql: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql ports: - 13306:3306 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=test - MYSQL_USER=test - MYSQL_PASSWORD=test phpmyadmin: image: phpmyadmin/phpmyadmin environment: - PMA_ARBITRARY=1 - PMA_HOST=mysql - PMA_USER=test - PMA_PASSWORD=test links: - mysql ports: - 4000:80 volumes: - ./phpmyadmin/sessions:/sessions

[dockerfile]

FROM php:7.2-apache RUN pecl install xdebug \ && docker-php-ext-enable xdebug WORKDIR /var/www

[起きている問題]
0. "$docker-compose up -d"で作成と起動

  1. "html"ディレクトリ内にファイルを置く
  2. "$docker exec -it コンテナ名 bash"でコンテナに入る
  3. "/var/www/html"にファイルは無い
  4. "/var/www/html"にファイルを置く
  5. コンテナから抜ける
  6. "html"ディレクトリ内にファイルは無い

ファイルを置いたらホストとコンテナ即反映されるものと思っておりましたが、
何か間違っている部分がありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2019/09/20 06:37

相対パスの指定がまずいかと
yuki84web

2019/09/20 08:19

"./html:/var/www/html"の部分でしょうか。一度チェックしてみます。
t_obara

2019/09/20 08:42

「docker-compose 相対パス」でぐぐると良いです。
yuki84web

2019/09/20 09:13

"$PWD/html:/var/www/html"では解決せず、"/d/hoge/html:/var/www/html"(※dはローカルのdドライブ)としても解決しませんでした。もう少し試行錯誤します
t_obara

2019/09/20 14:25

なるほど、windowsだと違いがあるようですね。WSLを利用しているのでしょうか?「docker-compose 相対パス Windows」の方が絞れそうですね。
guest

回答1

0

こちらは参考になりますでしょうか?

https://qiita.com/gentaro/items/7dec88e663f59b472de6
(Docker for WindowsをWSLから使う時のVolumeの扱い方)

docker-compose runは、基本はコマンドラインで

docker run -v C:\hoge\html:/var/www/html -p 4000:80 その他ビルドしたイメージ

とするのを設定に書き出してシンプルに起動できるようにしたものです。

Macだと、docker-composeのvolume指定は、docker-compose.ymlファイルのある場所から相対パスでもうまくいくのですが、Windowsなのでいったん絶対パスで書いてみて、うまく動くかチェックするといいかなと思います。

また、docker-composeでなく、docker run でうまくいくかもチェックするといいかと思います。
コンテナが上がったら、Docker ToolboxにGUIツールが付属していたら、そちらを使って起動状況を眺めてみるとわかりやすいです。
(Kitematicなど)

(Dockerfile側を拝見すると、ソースコードはイメージの中には含まれていないので、コンテナ起動時にマウントさせるという前提なのかとお見受けします。
もしなにか認識違っていましたら、ご容赦くださいませ)

投稿2019/10/01 00:05

suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問