Keep images between each tests

docker

#1

Hello,

I’m trying to find a way to keep images between each run with docker-compose. I know it’s possible with docke, by using cache and docker save, but it’s a little bit more complicated with docker-compose. I have this issue when I try to use a docker based job so I have to set machine: true and I can’t use setup_remote_docker.

I use this config for circleci :

defaults: &defaults
  working_directory: /home/circleci/product
  machine: true

version: 2
jobs:
  test_api:
    <<: *defaults
    steps:
      - checkout
      - restore_cache:
          keys:
            - gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "api/Gemfile.lock" }}
      - run: set -x && sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
      - run: docker-compose run api bundle
      - run: docker-compose run api rake db:create
      - run: docker-compose run api rake db:schema:load
      - run: docker-compose run api rspec spec
      - save_cache:
          key: gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "api/Gemfile.lock" }}
          paths:
            - api/tmp/bundle

  test_frontend:
    <<: *defaults
    steps:
      - checkout
      - restore_cache:
          keys:
            - bower-cache
      - restore_cache:
          keys:
            - yarn-cache-{{ arch }}-{{ .Branch }}-{{ checksum "frontend/yarn.lock" }}
      - run: set -x && sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
      - run: docker-compose run frontend yarn
      - run: docker-compose run frontend ember test --silent
      - save_cache:
          key: yarn-cache-{{ arch }}-{{ .Branch }}-{{ checksum "frontend/yarn.lock" }}
          paths:
            - frontend/node_modules
      - save_cache:
          key: bower-cache
          paths:
            - frontend/bower_components

workflows:
  version: 2
  build_and_test:
    jobs:
      - test_api
      - test_frontend

What is the best solution ?


#2