Serverspec / Specinfra backend for Docker Compose.
- Recommended Docker
1.7.0
or higher. - Docker Compose
Add this line to your application's Gemfile:
# Gemfile
gem 'specinfra-backend-docker_compose', '~> 0.1.0'
And then execute:
$ bundle
Or install it yourself as:
$ gem install specinfra-backend-docker_compose
Create the Docker Compose configuration to test:
# docker-compose.yml
web:
build: .
links:
- db:mysql
ports:
- 8080:80
db:
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=example
And a file example with some Serverspec tests:
# web_test_spec.rb
require 'serverspec'
require 'specinfra/backend/docker_compose'
set :docker_compose_file, './docker-compose.yml'
set :docker_compose_container, :web # The compose container to test
set :docker_wait, 15 # wait 15 seconds before running the tests
set :backend, :docker_compose
describe 'docker-compose.yml run' do
describe service('httpd') do
it { should be_enabled }
it { should be_running }
end
end
To run the tests:
$ rspec web_test_spec.rb
Uses the following Specinfra
configuration options:
:docker_compose_file
: Docker Compose configuration file path (required).:docker_compose_container
: The name of the container you want to test (required). Only one can be tested.:docker_wait
: Seconds to wait for containers to start (i.e., time to sleep before running the tests) (recommended).:backend
::docker_compose
or:docker_compose_lxc
(for LXC execution driver). Always set it after all other options.
Keep in mind that some CI environments may be somewhat slower than usual. So maybe you will need to increase the :docker_wait
value to one or two minutes to allow more time for services to start.
Some options used only by the :docker_compose_lxc
backend:
:sudo_options
: Sudo command argument list as string or as array.:sudo_path
: Sudo binary directory.:sudo_password
:disable_sudo
: whether to disable Sudo (enabled by default).
For example:
set :sudo_password, '0deH3R7RbHoEwzIqQGCD'
This backend uses the docker-compose-api
Ruby gem to emulate Docker Compose. So, some docker-compose.yml configuration options may not be supported yet or may not work exactly the same. Let us know if you find any bug or you need a missing feature.
Thanks to Mauricio Klein for all his work by the way!
See TESTING.md.
Please do not hesitate to open an issue with any questions or problems.
See CONTRIBUTING.md.
See TODO.md.
Author: | Xabier de Zuazo (xabier@zuazo.org) |
Copyright: | Copyright (c) 2016 Xabier de Zuazo |
License: | Apache License, Version 2.0 |
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.