Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zuazo/specinfra-backend-docker_compose
Serverspec / Specinfra backend for Docker Compose.
https://github.com/zuazo/specinfra-backend-docker_compose
backend devops docker docker-compose security specinfra specinfra-backend tdd testing
Last synced: about 2 months ago
JSON representation
Serverspec / Specinfra backend for Docker Compose.
- Host: GitHub
- URL: https://github.com/zuazo/specinfra-backend-docker_compose
- Owner: zuazo
- License: apache-2.0
- Created: 2016-01-07T07:04:24.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-08T06:26:12.000Z (about 9 years ago)
- Last Synced: 2024-11-15T00:33:14.710Z (about 2 months ago)
- Topics: backend, devops, docker, docker-compose, security, specinfra, specinfra-backend, tdd, testing
- Language: Ruby
- Homepage: https://rubygems.org/gems/specinfra-backend-docker_compose
- Size: 31.3 KB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Specinfra Docker Compose Backend
[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg?style=flat)](http://www.rubydoc.info/gems/specinfra-backend-docker_compose)
[![GitHub](http://img.shields.io/badge/github-z/specinfra--backend--docker__compose-blue.svg?style=flat)](https://github.com/zuazo/specinfra-backend-docker_compose)
[![License](https://img.shields.io/github/license/zuazo/specinfra-backend-docker_compose.svg?style=flat)](#license-and-author)[![Gem Version](https://badge.fury.io/rb/specinfra-backend-docker_compose.svg)](https://rubygems.org/gems/specinfra-backend-docker_compose)
[![Dependency Status](http://img.shields.io/gemnasium/zuazo/specinfra-backend-docker_compose.svg?style=flat)](https://gemnasium.com/zuazo/specinfra-backend-docker_compose)
[![Code Climate](http://img.shields.io/codeclimate/github/zuazo/specinfra-backend-docker_compose.svg?style=flat)](https://codeclimate.com/github/zuazo/specinfra-backend-docker_compose)
[![Travis CI Build Status](http://img.shields.io/travis/zuazo/specinfra-backend-docker_compose.svg?style=flat)](https://travis-ci.org/zuazo/specinfra-backend-docker_compose)
[![Circle CI Build Status](https://circleci.com/gh/zuazo/specinfra-backend-docker_compose/tree/master.svg?style=shield)](https://circleci.com/gh/zuazo/specinfra-backend-docker_compose/tree/master)
[![Coverage Status](http://img.shields.io/coveralls/zuazo/specinfra-backend-docker_compose.svg?style=flat)](https://coveralls.io/r/zuazo/specinfra-backend-docker_compose?branch=master)
[![Inline docs](http://inch-ci.org/github/zuazo/specinfra-backend-docker_compose.svg?branch=master&style=flat)](http://inch-ci.org/github/zuazo/specinfra-backend-docker_compose)[Serverspec](http://serverspec.org/) / [Specinfra](https://github.com/mizzy/specinfra) backend for [Docker Compose](https://docs.docker.com/compose/).
## Requirements
* Recommended Docker `1.7.0` or higher.
* Docker Compose## Installation
Add this line to your application's Gemfile:
```ruby
# Gemfilegem 'specinfra-backend-docker_compose', '~> 0.1.0'
```And then execute:
$ bundle
Or install it yourself as:
$ gem install specinfra-backend-docker_compose
## Usage
Create the [Docker Compose configuration](https://docs.docker.com/v1.8/compose/yml/) to test:
```yaml
# docker-compose.ymlweb:
build: .
links:
- db:mysql
ports:
- 8080:80db:
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=example
```And a file example with some Serverspec tests:
```ruby
# web_test_spec.rbrequire '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_composedescribe '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
## Configuration
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:
```ruby
set :sudo_password, '0deH3R7RbHoEwzIqQGCD'
```## Important Warning
This backend uses the [`docker-compose-api`](https://rubygems.org/gems/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](https://github.com/mauricioklein) for all his work by the way!
## Testing
See [TESTING.md](https://github.com/zuazo/specinfra-backend-docker_compose/blob/master/TESTING.md).
## Contributing
Please do not hesitate to [open an issue](https://github.com/zuazo/specinfra-backend-docker_compose/issues/new) with any questions or problems.
See [CONTRIBUTING.md](https://github.com/zuazo/specinfra-backend-docker_compose/blob/master/CONTRIBUTING.md).
## TODO
See [TODO.md](https://github.com/zuazo/specinfra-backend-docker_compose/blob/master/TODO.md).
## License and Author
| | |
|:---------------------|:-----------------------------------------|
| **Author:** | [Xabier de Zuazo](https://github.com/zuazo) ()
| **Copyright:** | Copyright (c) 2016 Xabier de Zuazo
| **License:** | Apache License, Version 2.0Licensed 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.