docker-rails 0.10.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0366030b589abebd5315e8fbf308739ed751ab0
4
- data.tar.gz: 13156b0a24820cfe5a5be649c6ae00e64a419983
3
+ metadata.gz: 61e25183a59f695d855dcfdc3d1b5caa4b6418d5
4
+ data.tar.gz: 9e3059dd5e309a69d48e45d8ea86858e8052ed85
5
5
  SHA512:
6
- metadata.gz: b6a2232fc2f1574603a87dc42a635a38bd9124b0c4749ad12060210ca499c6192b0d7106949f813963b7073002a345501f392358a5e2aacdedfa0792e751c458
7
- data.tar.gz: c97c362d3a8bd2d67157375484902fcedf03e49913bede0d45a8fe7e56c459907103e276a89763c18df14d9ef15379781e4b886fc1ad0229cb1fb6f4e796b81d
6
+ metadata.gz: 069b90234e74e45219f8160a316adfd112ce700cf42ccc745186b8d786f1f2334d810544d14b74c4b539762b19ea91f347763100a994602c30f1144268191bc1
7
+ data.tar.gz: fb2274af2b37723c53f79fb259810700fd5c66897eab81f4e5d762a0464ff19fba03da26a0f3825f1bc4e3a8b457bc8aee6569aa515aec8fd397fc20b9cbb41f
data/README.md CHANGED
@@ -3,7 +3,11 @@
3
3
  [![Build Status](https://travis-ci.org/alienfast/docker-rails.svg)](https://travis-ci.org/alienfast/docker-rails)
4
4
  [![Code Climate](https://codeclimate.com/github/alienfast/docker-rails/badges/gpa.svg)](https://codeclimate.com/github/alienfast/docker-rails)
5
5
 
6
- A simplified pattern to execute rails applications within Docker (with a CI build emphasis).
6
+ A simplified pattern to execute rails applications within Docker (with a CI build emphasis).
7
+
8
+ Uses **version: '2'** of `docker-compose` syntax
9
+
10
+ Note: The only item that is rails-specific is the `db_check`, otherwise this can be useful for other CI situations as well. Perhaps we should have chosen a different name?
7
11
 
8
12
  ## Features
9
13
  - DRY declarative `docker-rails.yml` allowing multiple environments to be defined with an inherited docker `compose` configuration
@@ -81,6 +85,7 @@ Commands:
81
85
  docker-rails ps <target> # List containers for the target compose configuration e.g. docker-rails ps --build=222 development
82
86
  docker-rails ps_all # List all remaining containers regardless of state e.g. docker-rails ps_all
83
87
  docker-rails rm_dangling # Remove danging images e.g. docker-rails rm_dangling
88
+ docker-rails rm_exited # Remove exited containers e.g. docker-rails rm_exited
84
89
  docker-rails rm_volumes <target> # Stop all running containers and remove corresponding volumes for the given build/target e.g. docker-rails rm_volumes --build=222 development
85
90
  docker-rails stop <target> # Stop all running containers for the given build/target e.g. docker-rails stop --build=222 development
86
91
  docker-rails up <target> # Up the docker-compose configuration for the given build/target. Use -d for detached mode. e.g. docker-rails up -d --build=222 test
@@ -108,19 +113,148 @@ Or install it yourself as:
108
113
 
109
114
  ### 1. Add a Dockerfile
110
115
 
116
+ This is a _real world example_ (**not a minimal example**) of a rails engine called `acme` with a `dummy` application used for testing. Other notable items:
117
+ - installs node
118
+ - uses [`dockito/vault`](https://github.com/dockito/vault) via `ONVAULT` to execute `npm` with private key access without exposing the npm key to the layer
119
+ - runs `npm build` to transpile the `dummy` application UI
120
+ - allows for use of a private npm registry
121
+
111
122
  ```bash
112
- FIXME
123
+ FROM convox/ruby
124
+
125
+ # mysql client, nodejs, clean up APT when done.
126
+ # - libelf1 for flow-bin
127
+ # - libfontconfig for phantomjs
128
+ RUN apt-get update -qq && apt-get install -qy \
129
+ vim \
130
+ wget \
131
+ libelf1 \
132
+ libfontconfig \
133
+ libmysqlclient-dev \
134
+ mysql-client \
135
+ git \
136
+ curl \
137
+ && curl -L https://raw.githubusercontent.com/dockito/vault/master/ONVAULT > /usr/local/bin/ONVAULT \
138
+ && chmod +x /usr/local/bin/ONVAULT \
139
+ && rm -rf /var/lib/apt/lists/* \
140
+ && apt-get -y autoclean
141
+
142
+ # Install nodejs - see dockerfile - https://github.com/nodejs/docker-node/blob/master/6.2/Dockerfile
143
+ # gpg keys listed at https://github.com/nodejs/node
144
+ RUN set -ex \
145
+ && for key in \
146
+ 9554F04D7259F04124DE6B476D5A82AC7E37093B \
147
+ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
148
+ 0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
149
+ FD3A5288F042B6850C66B31F09FE44734EB7990E \
150
+ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
151
+ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
152
+ B9AE9905FFD7803F25714661B63B535A4C206CA9 \
153
+ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
154
+ ; do \
155
+ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
156
+ done
157
+
158
+ ENV NPM_CONFIG_LOGLEVEL error
159
+ ENV NODE_VERSION 6.8.1
160
+
161
+ RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
162
+ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
163
+ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
164
+ && grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
165
+ && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
166
+ && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
167
+
168
+ # Set an environment variable to store where the app is installed to inside of the Docker image.
169
+ ENV INSTALL_PATH /app
170
+ RUN mkdir -p $INSTALL_PATH
171
+ WORKDIR $INSTALL_PATH
172
+
173
+ # Ensure gems are cached they are less likely to change than node modules
174
+ COPY acme.gemspec acme.gemspec
175
+ COPY Gemfile Gemfile
176
+ COPY Gemfile_shared.rb Gemfile_shared.rb
177
+ COPY spec/dummy/Gemfile spec/dummy/Gemfile
178
+ # This is only here to trigger re-bundle when lock changes, we actually only use the ImageGemfile.lock so that we are
179
+ # always doing a fresh bundle anytime the source lock changes.
180
+ COPY Gemfile.lock Gemfile.lock
181
+
182
+ # Bundle acme and the dummy app
183
+ RUN \
184
+ bundle install --jobs 12 --retry 3 --without development \
185
+ && mv Gemfile.lock ImageGemfile.lock \
186
+ && cd spec/dummy \
187
+ && bundle install --jobs 12 --retry 3 --without development \
188
+ && mv Gemfile.lock ImageGemfile.lock
189
+
190
+ # Ensure node_modules are cached next, they are less likely to change than source code
191
+ WORKDIR $INSTALL_PATH
192
+ COPY package.json package.json
193
+ COPY spec/dummy/package.json spec/dummy/package.json
194
+
195
+ # https://docs.npmjs.com/private-modules/docker-and-private-modules
196
+ ARG NPM_TOKEN
197
+
198
+ # npm install with:
199
+ # - private keys accessible
200
+ # - skip optional dependencies like fsevents
201
+ # - production (**turned off because we need eslint etc devDependencies)
202
+ # - link dummy's node_modules to acme for a faster install
203
+ # - add the authorized host key for github (avoids "Host key verification failed")
204
+ RUN \
205
+ #echo "Using NPM_TOKEN: ${NPM_TOKEN}" \
206
+ echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc \
207
+ && ONVAULT npm install --no-optional \
208
+ && rm .npmrc \
209
+ && cd spec/dummy \
210
+ && ln -s $INSTALL_PATH/node_modules node_modules
211
+
212
+ # add all the test hosts to localhost to skip xip.io
213
+ RUN echo "127.0.0.1 localhost dummy.com.127.0.0.1.xip.io" >> /etc/hosts
214
+
215
+ #--------------
216
+ # NOTE: we evidently must include the VOLUME command **after** the npm install so that we can read the installed modules
217
+ #--------------
218
+ # Bypass the union file system for better performance (this is important for read/write of spec/test files)
219
+ # https://docs.docker.com/engine/reference/builder/#volume
220
+ # https://docs.docker.com/userguide/dockervolumes/
221
+ VOLUME $INSTALL_PATH
222
+
223
+ # Copy the project files into the container (again, better performance).
224
+ # Use `extract` in the docker-rails.yml to obtain files such as test results.
225
+ # NOTE: make sure all unwanted files are listed in the .dockerignore! i.e. lock files in the case of an engine!
226
+ COPY . .
227
+
228
+ #
229
+ # - Overwrite the source lock files with the image lock files (so we ensure a fresher bundle _and_ that we have the bundled gems in the lock file)
230
+ # - Run npm build on dummy
231
+ RUN \
232
+ mv ImageGemfile.lock Gemfile.lock \
233
+ && cd spec/dummy \
234
+ && mv ImageGemfile.lock Gemfile.lock \
235
+ && npm run build
113
236
  ```
114
237
 
115
238
  ### 2. Add a docker-rails.yml
116
239
 
117
240
  Environment variables will be interpolated, so feel free to use them.
118
- The _rails engine_ example below shows an example with all of the environments `ssh_test | development | test | parallel_tests | staging` to show reuse of the primary `compose` configuration.
241
+ The _rails engine_ example below shows an example with all of the environments `ssh_test | test | parallel_tests | sysbench*` to show reuse of the primary `compose` configuration.
119
242
 
120
243
  ```yaml
121
244
  verbose: true
245
+ before_command: >
246
+ bash -c "
247
+ rm -Rf target
248
+ && rm -Rf spec/dummy/log
249
+ && mkdir -p target
250
+ "
122
251
  exit_code: web
123
- before_command: bash -c "rm -Rf target && rm -Rf spec/dummy/log"
252
+
253
+ # ---
254
+ # Run a dockito vault container during the build to allow it to access secrets (e.g. github clone)
255
+ dockito:
256
+ vault:
257
+ enabled: true
124
258
 
125
259
  # ---
126
260
  # Declare a reusable extract set
@@ -130,167 +264,197 @@ extractions: &extractions
130
264
  - '/app/target'
131
265
  - '/app/vcr'
132
266
  - '/app/spec/dummy/log:spec/dummy'
133
- - '/app/tmp/parallel_runtime_cucumber.log:./tmp'
134
- - '/app/tmp/parallel_runtime_rspec.log:./tmp'
135
267
 
136
-
137
- # ---
138
- # Declare a reusable elasticsearch container, staging/production connects to existing running instance.
268
+ # local environments need elasticsearch, staging/production connects to existing running instance.
139
269
  elasticsearch: &elasticsearch
140
270
  elasticsearch:
141
271
  image: library/elasticsearch:1.7
142
272
  ports:
143
273
  - "9200"
144
-
145
- # ---
146
- # Base docker-compose configuration for all environments. Anything under the `compose` element must be standard docker-compose syntax.
147
- compose:
148
- web:
149
- build: .
150
- working_dir: /app/spec/dummy
151
- ports:
152
- - "3000"
153
- links:
154
- - db
155
- volumes:
156
- # make keys and known_hosts available
157
- - ~/.ssh:/root/.ssh
158
-
159
- db:
160
- # https://github.com/docker-library/docs/tree/master/mysql
161
- image: library/mysql:5.7.6
162
- ports:
163
- - "3306"
164
-
165
- # https://github.com/docker-library/docs/tree/master/mysql#environment-variables
166
- environment:
167
- - MYSQL_ALLOW_EMPTY_PASSWORD=true
168
274
 
169
- # ---
170
- # Overrides based on the named targets ssh_test | development | test | parallel_tests | staging
171
- ssh_test:
275
+ test:
276
+ <<: *extractions
172
277
  compose:
173
- web:
174
- command: bash -c "ssh -T git@bitbucket.org"
278
+ services:
279
+ <<: *elasticsearch
280
+ web:
281
+ links:
282
+ - elasticsearch # standard yaml doesn't merge arrays so we have to add this explicitly
283
+ environment:
284
+ - RAILS_ENV=test
285
+ - CI=true
286
+ command: >
287
+ bash -c "
288
+ cd ../.. \
289
+ && gem list aws-sdk \
290
+ && bundle exec rake -T \
291
+ && npm run validate \
292
+ && cd spec/dummy \
293
+ && echo 'Check and wait for database connection' \
294
+ && bundle exec docker-rails db_check mysql \
295
+ && echo 'DB rebuild' \
296
+ && bundle exec rake db:rebuild_test \
297
+ && echo 'Tests' \
298
+ && cd ../.. \
299
+ && bundle exec rake spec SPEC=spec/app/models/plan_spec.rb cucumber FEATURE=features/public_pages.feature
300
+ "
175
301
 
176
- development:
302
+ parallel_tests:
303
+ <<: *extractions
177
304
  compose:
178
- <<: *elasticsearch
305
+ services:
306
+ <<: *elasticsearch
307
+ web:
308
+ links:
309
+ - elasticsearch # standard yaml doesn't merge arrays so we have to add this explicitly
310
+ environment:
311
+ - RAILS_ENV=test
312
+ - CI=true
313
+ command: >
314
+ bash -c "
315
+ cd ../.. \
316
+ && npm run validate \
317
+ && cd spec/dummy \
318
+ && echo 'Check and wait for database connection' \
319
+ && bundle exec docker-rails db_check mysql \
320
+ && echo 'DB rebuild' \
321
+ && bundle exec rake db:rebuild_test[true] \
322
+ && echo 'Tests' \
323
+ && cd ../.. \
324
+ && bundle exec rake parallel:spec parallel:features
325
+ "
326
+
327
+ compose:
328
+ version: '2'
329
+ services:
179
330
  web:
331
+ build:
332
+ context: .
333
+ args:
334
+ - NPM_TOKEN
335
+ working_dir: /app/spec/dummy
336
+ ports:
337
+ - "3000"
338
+ - "4000"
180
339
  links:
181
- - elasticsearch # standard yaml doesn't merge arrays so we have to add this explicitly
340
+ - db
341
+ # volumes:
342
+ # # make keys and known_hosts available
343
+ # - ~/.ssh:/root/.ssh
344
+ db:
345
+ # https://github.com/docker-library/docs/tree/master/mysql
346
+ image: library/mysql:5.7
347
+ ports:
348
+ - "3306"
349
+ volumes:
350
+ - ./db/mysql:/etc/mysql/conf.d
351
+ # https://github.com/docker-library/docs/tree/master/mysql#environment-variables
182
352
  environment:
183
- - RAILS_ENV=development
184
- command: >
185
- bash -c "
186
-
187
- echo 'Bundling gems'
188
- && bundle install --jobs 4 --retry 3
189
-
190
- && echo 'Generating Spring binstubs'
191
- && bundle exec spring binstub --all
192
-
193
- && echo 'Clearing logs and tmp dirs'
194
- && bundle exec rake log:clear tmp:clear
353
+ - MYSQL_ALLOW_EMPTY_PASSWORD=true
195
354
 
196
- && echo 'Check and wait for database connection'
197
- && bundle exec docker-rails db_check mysql
198
355
 
199
- && echo 'Setting up new db if one doesn't exist'
200
- && bundle exec rake db:version || { bundle exec rake db:setup; }
201
-
202
- && echo "Starting app server"
203
- && bundle exec rails s -p 3000
204
-
205
- && echo 'Setup and start foreman'
206
- && gem install foreman
207
- && foreman start
208
- "
356
+ # --------------------------
357
+ # test cases below here
358
+ ssh_test:
359
+ compose:
360
+ services:
361
+ web:
362
+ command: bash -c "ssh -T git@github.com"
209
363
 
210
- test:
211
- <<: *extractions
364
+ sysbench_all:
212
365
  compose:
213
- <<: *elasticsearch
214
- web:
215
- links:
216
- - elasticsearch # standard yaml doesn't merge arrays so we have to add this explicitly
217
- environment:
218
- - RAILS_ENV=test
219
- command: >
220
- bash -c "
221
- echo 'Bundling gems'
222
- && bundle install --jobs 4 --retry 3
366
+ services:
367
+ <<: *elasticsearch
223
368
 
224
- && echo 'Clearing logs and tmp dirs'
225
- && bundle exec rake log:clear tmp:clear
369
+ web:
370
+ command: >
371
+ bash -c "
226
372
 
227
- && echo 'Check and wait for database connection'
228
- && bundle exec docker-rails db_check mysql
373
+ echo 'Benchmarking CPU'
374
+ && sysbench --test=cpu --cpu-max-prime=20000 run
229
375
 
230
- && echo 'Setting up new db if one doesn't exist'
231
- && bundle exec rake db:version || { bundle exec rake db:setup; }
376
+ && echo 'Creating file for IO benchmark'
377
+ && sysbench --test=fileio --file-total-size=2G prepare
232
378
 
233
- && echo 'Tests'
234
- && cd ../..
235
- && xvfb-run -a bundle exec rake spec cucumber
236
- "
379
+ && echo 'Benchmarking IO'
380
+ && sysbench --test=fileio --file-total-size=2G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
237
381
 
238
- parallel_tests:
239
- <<: *extractions
240
- compose:
241
- <<: *elasticsearch
242
- web:
243
- links:
244
- - elasticsearch # standard yaml doesn't merge arrays so we have to add this explicitly
245
- environment:
246
- - RAILS_ENV=test
247
- command: >
248
- bash -c "
382
+ && echo 'Cleaning up file for IO benchmark'
383
+ && sysbench --test=fileio --file-total-size=2G cleanup
249
384
 
250
- echo 'Bundling gems'
251
- && bundle install --jobs 4 --retry 3
385
+ && echo 'Bundling gems'
386
+ && bundle install --jobs 4 --retry 3
252
387
 
253
- && echo 'Clearing logs and tmp dirs'
254
- && bundle exec rake log:clear tmp:clear
388
+ && echo 'Check and wait for database connection'
389
+ && bundle exec docker-rails db_check mysql
255
390
 
256
- && echo 'Check and wait for database connection'
257
- && bundle exec docker-rails db_check mysql
391
+ && echo 'Create test database'
392
+ && mysql -h db -u root -e 'create database test'
258
393
 
259
- && echo 'Setting up new db if one doesn't exist'
260
- && bundle exec rake parallel:drop parallel:create parallel:migrate parallel:seed
394
+ && echo 'Preparing MySQL benchmark'
395
+ && sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-host=db prepare
261
396
 
262
- && echo 'Tests'
263
- && cd ../..
264
- && xvfb-run -a bundle exec rake parallel:spec parallel:features
265
- "
397
+ && echo 'Benchmarking MySQL'
398
+ && sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-host=db --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
266
399
 
267
- staging:
400
+ && echo 'Cleaning up MySQL benchmark'
401
+ && sysbench --test=oltp --mysql-db=test --mysql-user=root --mysql-host=db cleanup
402
+ "
403
+
404
+ sysbench_db:
268
405
  compose:
269
- web:
270
- environment:
271
- - RAILS_ENV=staging
272
- command: >
273
- bash -c "
406
+ services:
407
+ <<: *elasticsearch
408
+ web:
409
+ command: >
410
+ bash -c "
274
411
 
275
- echo 'Bundling gems'
276
- && bundle install --jobs 4 --retry 3
412
+ echo 'Bundling gems'
413
+ && bundle install --jobs 4 --retry 3
277
414
 
278
- && echo 'Clearing logs and tmp dirs'
279
- && bundle exec rake log:clear tmp:clear
415
+ && echo 'Check and wait for database connection'
416
+ && bundle exec docker-rails db_check mysql
280
417
 
281
- && echo 'Check and wait for database connection'
282
- && bundle exec docker-rails db_check mysql
418
+ && echo 'Create test database'
419
+ && mysql -h db -u root -e 'create database test'
283
420
 
284
- && echo 'Setting up new db if one doesn't exist'
285
- && bundle exec rake db:migrate
421
+ && echo 'Preparing MySQL benchmark'
422
+ && sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-host=db prepare
286
423
 
287
- && echo "Starting app server"
288
- && bundle exec rails s -p 3000
424
+ && echo 'Benchmarking MySQL'
425
+ && sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-host=db --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
289
426
 
290
- && echo 'Setup and start foreman'
291
- && gem install foreman
292
- && foreman start
293
- "
427
+ && echo 'Cleaning up MySQL benchmark'
428
+ && sysbench --test=oltp --mysql-db=test --mysql-user=root --mysql-host=db cleanup
429
+ "
430
+
431
+ sysbench_io:
432
+ compose:
433
+ services:
434
+ <<: *elasticsearch
435
+ web:
436
+ command: >
437
+ bash -c "
438
+ echo 'Creating file for IO benchmark'
439
+ && sysbench --test=fileio --file-total-size=2G prepare
440
+
441
+ && echo 'Benchmarking IO'
442
+ && sysbench --test=fileio --file-total-size=2G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
443
+
444
+ && echo 'Cleaning up file for IO benchmark'
445
+ && sysbench --test=fileio --file-total-size=2G cleanup
446
+ "
447
+
448
+ sysbench_cpu:
449
+ compose:
450
+ services:
451
+ <<: *elasticsearch
452
+ web:
453
+ command: >
454
+ bash -c "
455
+ echo 'Benchmarking CPU'
456
+ && sysbench --test=cpu --cpu-max-prime=20000 run
457
+ "
294
458
  ```
295
459
 
296
460
  ## CI setup
@@ -339,14 +503,10 @@ source ~/.bash_profile
339
503
  docker-rails cleanup --build=$bamboo_buildNumber parallel_tests
340
504
  ```
341
505
 
342
- ## Work in progress - contributions welcome
343
- Open to pull requests. Open to refactoring. It can be expanded to suit many different configurations.
344
-
345
- TODO:
346
- - **DB versatility** - expand to different db status detection as-needed e.g. postgres. CLI is now modularized to allow for this.
347
-
348
506
  ## Contributing
349
507
 
508
+ Yes please.
509
+
350
510
  1. Fork it ( https://github.com/[my-github-username]/docker-rails/fork )
351
511
  2. Create your feature branch (`git checkout -b my-new-feature`)
352
512
  3. Commit your changes (`git commit -am 'Add some feature'`)
@@ -354,4 +514,4 @@ TODO:
354
514
  5. Create a new Pull Request
355
515
 
356
516
  ## License and Attributions
357
- MIT license, inspired by many but certainly a [useful blog post by AtlasHealth](http://www.atlashealth.com/blog/2014/09/persistent-ruby-gems-docker-container).
517
+ MIT license
@@ -83,7 +83,7 @@ module Docker
83
83
 
84
84
  # check the exit_code
85
85
  if @config['exit_code'].nil?
86
- first_defined_service = @compose_config.keys[0]
86
+ first_defined_service = @compose_config.services.keys[0]
87
87
  puts "exit_code not set in configuration, using exit code from first defined service: #{first_defined_service}"
88
88
  @config['exit_code'] = first_defined_service
89
89
  end
@@ -107,7 +107,7 @@ module Docker
107
107
  # - '/project/tmp/parallel_runtime_cucumber.log:./tmp'
108
108
  # - '/project/tmp/parallel_runtime_rspec.log:./tmp'
109
109
 
110
- @compose_config.each_key do |service_name|
110
+ @compose_config.services.each_key do |service_name|
111
111
  service_config = @config[service_name]
112
112
  extractions = service_config[:extract] unless service_config.nil?
113
113
  next if extractions.nil?
@@ -1,5 +1,5 @@
1
1
  module Docker
2
2
  module Rails
3
- VERSION = '0.10.0'
3
+ VERSION = '1.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Ross
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2016-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler