56781


シェルスクリプトから`docker run`を呼び出して運用していたものを `docker-compose`
に移行したいのですがうまくできなくて困っています。

以下のような記述に対して、

[code]

    docker run -v /home/user/docker/storage/var_lib_mysql:var/lib/mysql -d mysql1
    
[/code]

このように置き換えてみたのですが、

[code]

    version: '3'
    services:
        mysql1:
            volumes:
                - /home/user/docker/storage/var_lib_mysql:var/lib/mysql
    
    volumes:
        /home/user/docker/storage/var_lib_mysql:
    
[/code]

以下のようなエラーになります。

[code]

    ERROR: The Compose file './docker-compose.yml' is invalid because:
    volumes value '/home/user/docker/storage/var_lib_mysql' does not match any of the regexes: u'^[a-zA-Z0-9._-]+$'
    
[/code]

":"の前の部分には"/"が入れられないようだというのは分かります。  
パスを指定してる箇所を`var_lib_mysql`だけに置き換えれば起動できるのですが、ホスト側のディレクトリを指定できてないので、dockerが作ったディレクトリがまうんとされてしまっています。

このマウント先のディレクトリを指定する方法を調べていたのですが、その部分を解説してくれている記事が見当たらず、結局よく分かりませんでした。  
ご存知でしたら教えていただけますでしょうか。


CC BY-SA 4.0
2019-07-20T18:44:50.220
56779
2019-07-21T02:44:26.490
25004
question
docker docker-compose
docker run -v で指定してたディレクトリの指定を docker-compose.yml で行いたい


下2行の記述が間違っており、かつ今回の使用方法だと不要です。以下のように書き換えてみてください。

[code]

    version: '3'
    services:
        mysql1:
          volumes:
            - /home/user/docker/storage/var_lib_mysql:/var/lib/mysql
    
[/code]

ちなみに、間違っている理由は `/` が含まれていることではなく、 `:`
の先が無いことで、今回不要な理由は単一のコンテナにマウントしているのみであるからです。

また、現状だとイメージあるいはビルド方法が記載されていないので、同様にエラーが発生します。これは、 `image` か `build`
の一方を指定することで解決できます。

参考： [Compose file version 3 reference | Docker
Documentation](https://docs.docker.com/compose/compose-file/)


CC BY-SA 4.0
2019-07-21T02:44:26.490
56781
2019-07-21T02:44:26.490
29826
56779
answer