dockerspec icon indicating copy to clipboard operation
dockerspec copied to clipboard

Invalid characters for a local volume name

Open estahn opened this issue 7 years ago • 6 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)>'

estahn avatar Apr 03 '17 10:04 estahn

Reference: https://github.com/mauricioklein/docker-compose-api/issues/33

estahn avatar Apr 03 '17 11:04 estahn

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 avatar Apr 03 '17 14:04 estahn

@estahn thanks for all your reports :wink:

zuazo avatar Apr 04 '17 07:04 zuazo

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.

zuazo avatar Apr 04 '17 07:04 zuazo

@zuazo

As I can see the docker-compose-api gem has been released today. Could you please take a look. Is issue still actual?

Cc: @estahn

sergeyklay avatar Apr 18 '17 08:04 sergeyklay

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 [email protected] and [email protected]:

/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>'

zuazo avatar Apr 18 '17 14:04 zuazo