12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コンテナ内へファイル転送 (docker-compose)

Last updated at Posted at 2021-05-31

概要

docker-composeのvolume機能で、ホストファイルをdocker内に共有可能です。
しかし、ディスクI/Oの問題で、パフォーマンスが落ちる。

そのため、相互書き込みが必要なければ、転送した方が良さそう。
そこで、調べたことをメモしておく。

dockerでのコピー

下記コマンドでコピーできるが、コンテナ名を調べたりする必要があり、ちょっと面倒と思う。

$ docker cp {ホスト側ファイルパス} {コンテナ名}:{docker内のパス}

docker-composeでのコンテナ内へコピー(転送)

docker-compose cpみたいにできたら便利なのだけど、そのようなコマンドなさそう。
そこで、参考サイトに記載のサイトで見つけた方法で転送することにする。

# hoge.txtをコンテナへ転送する
$ docker cp ./hoge.txt $(docker-compose ps -q php):/var/www/

docker-composeでのコンテナ内からコピー(取得)

逆にコンテナ内からファイルを取得する場合は、下記となる。

# コンテナからhoge.txtを取得する
$ docker cp $(docker-compose ps -q php):/var/www/hoge.txt ./

docker-composeでのコンテナ名を取得する

$(docker-compose ps -q php)だとコンテナIDになる。
コンテナ名を取得したい場合は、こんな感じになりそうです。

$ CONTAINER=$(docker inspect -f '{{.Name}}' $(docker-compose ps -q php) | cut -c2-)
$ echo $CONTAINER

コンテナ名のphpは、docker-compose.ymlファイルで定義している名前となります。
※ コンテナ名を調べたりしなくて済むから少しは楽なのかな...

docker-compose.yml
version: '3'
services:
  php:                     # ← ここの名前!!
    image: php:7.3
    build:
      context: ./
      dockerfile: ./docker/php/Dockerfile
    tty: true
    ports:
      - '9000:9000'

まとめ

そのうち、docker-composeコマンドにcpコマンドできないかな(^^;)

参考サイト

以上

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?