Проблемы с монтированием Docker в Ruby - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть тестовый сценарий, в котором я запускаю экземпляр Ruby внутри контейнера докера Windows.Я должен подчеркнуть, что скрипт ruby ​​прекрасно работает вне докера.При запуске внутри контейнера Docker сценарий также работает нормально, кроме случаев, когда цель доступа к файлу Ruby находится на подключенном томе.В этом случае я получаю ошибку.Я могу для тестового случая, конечно, обойти эту проблему, скопировав файл, но это может вызвать сложности для реального сценария, который обнаружил эту проблему.

Вот примерная стенограмма, cbh_test - это подключенный том

PS C:\> echo ""> bob
PS C:\> cp cbh_test\failer.rb .
PS C:\> C:\Ruby25-x64\bin\ruby.exe .\failer.rb
PS C:\> cd cbh_test
PS C:\cbh_test> echo ""> bob
PS C:\cbh_test> C:\Ruby25-x64\bin\ruby.exe .\failer.rb
Traceback (most recent call last):
./failer.rb: Invalid argument @ rb_readlink - C:/cbh_test (Errno::EINVAL)

Экземпляр Docker вызывается:

docker run -it -v c:\Users\me\work\fred:c:\cbh_test  bob/failer  powershell

Dockerfile:

# escape=`
FROM microsoft/windowsservercore:ltsc2016
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
COPY install_ruby.ps1 c:
RUN powershell c:\install_ruby.ps1

failer.rb:

def main(args)
    fragment = "bob"
    $tmp = File.open(File.join(File.dirname(__FILE__), fragment), 'r+').read      
end
main($ARGV)

install_ruby.ps:

$RUBY_VERSION = "2.5.3-1"
$RUBY_RELEASE =  "2.5.3-1"


$url = ('https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-{0}/rubyinstaller-{1}-x64.exe'-f $RUBY_VERSION, $RUBY_RELEASE);
$exe = "ruby-install.exe"

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
Invoke-WebRequest -Uri $url -OutFile $exe; 
$args = "/silent /tasks='assocfiles,modpath'"
Start-Process -FilePath $exe -ArgumentList $args -PassThru -Wait 

1 Ответ

0 голосов
/ 09 июля 2019

Я пытался в течение нескольких дней, и единственное решение, которое мне удалось найти, это использование ltsc2019.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...