

### やりたいこと

windows上にdockerでrubyコンテナを作り、windows上で編集したrubyスクリプトを実行する。

### 試したこと

  * 次のとおり定義し、rubyコンテナを作る ( `$ docker-compose up -d` )

[code]

    version: '3'
    services:
      rubyapp:
        image: ruby:2.5-alpine
        container_name: myruby
    
[/code]

  * rubyスクリプトをwindows上に用意する (git for Windowsを使用)

[code]

    C:/home/docker/myapp/
    |-- docker-compose.yml
    `-- ruby
        `-- app
            `-- test.rb
    
    
    $ echo "puts Time.now" > ruby/app/test.rb
    
[/code]

### 結果

次のコマンドを実行

[code]

    # Windows上のパスを指定すると見つからないエラー
    $ winpty docker run -v "C:\home\docker\myapp\ruby\app":/root ruby:2.5-alpine ruby ruby/app/test.rb
    ruby: No such file or directory -- ruby/app/test.rb (LoadError)
    
    
    # コンテナ上のパスを指定してもエラー
    $ winpty docker run -v "C:\home\docker\myapp\ruby\app":/root ruby:2.5-alpine ruby /root/test.rb
    ruby: No such file or directory -- C:/Program Files/Git/root/test.rb (LoadError)
    
    
    # -eオプションでは実行できる
    $ winpty docker run -v "C:\home\docker\myapp\ruby\app":/root ruby:2.5-alpine ruby -e "puts Time.now"
    2018-12-17 05:47:23 +0000
    
[/code]

コマンドの指定方法が悪いのか、そもそもできないのか、ご教示頂けるとありがたいです。  
よろしくお願いします。


CC BY-SA 4.0
2018-12-17T05:53:32.110
51285
2020-10-22T05:02:20.277
31491
question
ruby docker
windows上で作ったrubyスクリプトをrubyコンテナ上で実行したい


rubyをただ実行したいだけであれば、docker-compose.ymlの作成は不要です。

上記のコマンドだと  
workdirが設定されていないためエラーになっているのだとおもいます。

`$ docker run --workdir=/app --volume="C:\home\docker\myapp\ruby\app":/app
ruby:2.5-alpine ruby test.rb`

また、ファイルが見つからなかったときは  
`$ docker run --workdir=/app --volume="C:\home\docker\myapp\ruby\app":/app
ruby:2.5-alpine /bin/sh`  
でマウントされたファイルを探しに行くのもいいでしょう


CC BY-SA 4.0
2018-12-30T12:21:25.523
51622
2018-12-30T12:21:25.523
31623
51285
answer