Мой текущий docker-compose.yml
файл:
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:
Я сейчас пытаюсь создать файл docker-compose-test.yml
, который переопределяет предыдущий файл для тестирования. Мне пришло в голову использовать это:
version: '2'
services:
app:
command: pytest
db:
volumes:
- dbtestvolume:/var/lib/postgresql/data
volumes:
dbtestvolume:
А затем запустите тесты с помощью команды:
docker-compose -f docker-compose.yml -f docker-compose-test.yml run --rm app
что, насколько я понимаю, должны перекрывать только другие аспекты по сравнению с файлом docker, используемым для разработки, то есть используемой командой и объемом данных, в котором хранятся данные.
Команда успешно переопределена, хотя, к сожалению, объем данных остается прежним, и поэтому данные моего приложения перезаписываются, если я запускаю свои тесты.
Это правильный способ настройки конфигурации докера для тестов? Любое предложение о том, что идет не так?
Если это неправильный способ, как правильно настроить конфигурацию docker-compose для тестирования?
Альтернативный тест
Я попытался изменить свой docker-compose-test.yml
файл, чтобы использовать другой сервис (db-test
) для тестирования:
version: '2'
services:
app:
command: pytest
depends_on:
- db-test
db-test:
image: postgres:9.6-alpine
restart: always
environment:
POSTGRES_DB: app
POSTGRES_USER: app
POSTGRES_PASSWORD: app
Что происходит сейчас, так это то, что у меня есть данные, которые не перезаписываются (таким образом, это работает, ура!) При запуске моих тестов, но если я пытаюсь выполнить команду:
docker-compose down
Я получаю этот вывод:
Stopping app_app_1 ... done
Stopping app_db_1 ... done
Found orphan containers (app_db-test_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
, а затем docker-compose down
не удается. Так что-то не настроено правильно.
Есть идеи?