Invalid characters for a local volume name
estahn opened this issue · comments
Dockerspec Version
0.4.1
Ruby Version
2.4.0
Platform Details
Mac
Scenario
Run dockerspec with docker-compose.
Steps to Reproduce
Dockerfile
version: '2'
services:
static-images:
image: nginx:1.10-alpine
ports:
- "8080:80"
volumes:
- ../images:/usr/share/nginx/html:ro
spec:
describe docker_compose('spec/docker-compose/default.yml', wait: 30) do
its_container(:thumbor) do
describe file('/etc/thumbor.conf') do
it { should be_file }
its(:content) { should_not be_empty }
end
end
end
Expected Result
Run as documented
Actual Result
/Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-api-1.33.2/lib/docker/connection.rb:50:in `rescue in request': create ../images: "../images" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intented to pass a host directory, use absolute path (Docker::Error::ServerError)
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-api-1.33.2/lib/docker/connection.rb:38:in `request'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-api-1.33.2/lib/docker/connection.rb:65:in `block (2 levels) in <class:Connection>'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-api-1.33.2/lib/docker/container.rb:337:in `create'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-compose-api-1.1.2/lib/docker-compose/models/compose_container.rb:92:in `prepare_container'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-compose-api-1.1.2/lib/docker-compose/models/compose_container.rb:206:in `start'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-compose-api-1.1.2/lib/docker-compose/models/compose.rb:117:in `block in call_container_method'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-compose-api-1.1.2/lib/docker-compose/models/compose.rb:116:in `each'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-compose-api-1.1.2/lib/docker-compose/models/compose.rb:116:in `call_container_method'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/docker-compose-api-1.1.2/lib/docker-compose/models/compose.rb:70:in `start'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:198:in `do_start'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:50:in `block in initialize'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:50:in `chdir'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:50:in `initialize'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/specinfra-2.67.7/lib/specinfra/backend/base.rb:8:in `new'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/specinfra-2.67.7/lib/specinfra/backend/base.rb:8:in `instance'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/engine/specinfra/backend.rb:131:in `backend_instance'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/engine/specinfra/backend.rb:58:in `save'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/engine/specinfra.rb:72:in `when_running'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:147:in `block in call_engines_method'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:147:in `map'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:147:in `call_engines_method'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:102:in `when_running'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/runner/base.rb:230:in `when_running'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/runner/compose.rb:116:in `run'
from /Users/estahn/.rvm/gems/ruby-2.4.0/gems/dockerspec-0.4.1/lib/dockerspec/rspec/resources.rb:436:in `docker_compose'
from /Users/estahn/Projects/hipages/docker-thumbor/images/6.3/spec/thumbor_spec.rb:43:in `block in <top (required)>'
Reference: mauricioklein/docker-compose-api#33
Workaround:
spec file
require 'dockerspec/infrataster'
require 'fastimage'
Infrataster::Server.define('app', '127.0.0.1')
`find spec/docker-compose -type f -name "*.tpl.yml" | xargs -I% -n1 /bin/bash -c 'envsubst < % > $(dirname %)/$(basename % .tpl.yml).yml'`
docker-compose.tpl.yml:
version: '2'
services:
images:
image: nginx:1.10-alpine
volumes:
- $PWD/spec/images:/usr/share/nginx/html
@estahn thanks for all your reports 😉
I'm going to leave this issue open, but if I understand the problem correctly, this should be fixed in the docker-compose-api gem.
Thanks @sergeyklay.
Unfortunately the error still seems to prevail. But I'm not sure if it is a docker-compose-api
or docker-api
gem problem.
Tested with docker-api@1.33.4
and docker-compose-api@1.1.5
:
/home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-api-1.33.4/lib/docker/connection.rb:50:in `rescue in request': create ../images: "../images" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intented to pass a host directory, use absolute path (Docker::Error::ServerError)
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-api-1.33.4/lib/docker/connection.rb:38:in `request'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-api-1.33.4/lib/docker/connection.rb:65:in `block (2 levels) in <class:Connection>'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-api-1.33.4/lib/docker/container.rb:338:in `create'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-compose-api-1.1.5/lib/docker-compose/models/compose_container.rb:94:in `prepare_container'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-compose-api-1.1.5/lib/docker-compose/models/compose_container.rb:219:in `start'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-compose-api-1.1.5/lib/docker-compose/models/compose.rb:117:in `block in call_container_method'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-compose-api-1.1.5/lib/docker-compose/models/compose.rb:116:in `each'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-compose-api-1.1.5/lib/docker-compose/models/compose.rb:116:in `call_container_method'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/docker-compose-api-1.1.5/lib/docker-compose/models/compose.rb:70:in `start'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:198:in `do_start'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:50:in `block in initialize'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:50:in `chdir'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/specinfra-backend-docker_compose-0.1.0/lib/specinfra/backend/docker_compose.rb:50:in `initialize'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/specinfra-2.67.8/lib/specinfra/backend/base.rb:8:in `new'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/specinfra-2.67.8/lib/specinfra/backend/base.rb:8:in `instance'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/engine/specinfra/backend.rb:131:in `backend_instance'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/engine/specinfra/backend.rb:58:in `save'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/engine/specinfra.rb:72:in `when_running'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:147:in `block in call_engines_method'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:147:in `map'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:147:in `call_engines_method'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/engine_list.rb:102:in `when_running'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/runner/base.rb:230:in `when_running'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/runner/compose.rb:116:in `run'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/dockerspec-0.4.1/lib/dockerspec/rspec/resources.rb:436:in `docker_compose'
from /home/dockertests/tmp/spec/test_spec.rb:3:in `<top (required)>'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `load'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `each'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:100:in `setup'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:86:in `run'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/bin/rspec:22:in `load'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/bin/rspec:22:in `<main>'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/bin/ruby_executable_hooks:15:in `eval'
from /home/dockertests/.rvm/gems/ruby-2.4.0@tmp/bin/ruby_executable_hooks:15:in `<main>'