dimanche 6 mai 2018

What is the proper way to setup a simple docker-compose configuration for testing?

My current docker-compose.yml file:

version: '2'
services:
  app:
    restart: always
    build: ./web
    ports:
      - "8000:8000"
    volumes:
      - ./web:/app/web
    command: /usr/local/bin/gunicorn -w 3 -b :8000 project:create_app()
    environment:
      FLASK_APP: project/__init__.py
    depends_on:
      - db
    working_dir: /app/web

  db:
    image: postgres:9.6-alpine
    restart: always
    volumes:
      - dbvolume:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: app
      POSTGRES_USER: app
      POSTGRES_PASSWORD: app

volumes:
  dbvolume:

I'm now trying to create a docker-compose-test.yml file that overrides the previous file for testing. What came to my mind was to use this:

version: '2'
services:
  app:
    command: pytest

  db:
    volumes:
      - dbtestvolume:/var/lib/postgresql/data

volumes:
  dbtestvolume:

And then run the tests with the command:

docker-compose -f docker-compose.yml -f docker-compose-test.yml run --rm app

that as far as I understand should override only the different aspects compared to the docker-file used for development, that is the command used and the data volume where the data is stored.

The command is successfully overridden, while unfortunately the data volume stays the same and so the data of my application get overwritten if I run my tests.

Is this the correct way to set up a docker configuration for the tests? Any suggestion about what is going wrong?

If this is not the correct way, what is the proper way to setup a docker-compose configuration for testing?

Aucun commentaire:

Enregistrer un commentaire