Различия в Env vars и Docker между dev, staging и prod

Хотя мой конкретный пример включает Django, Docker и Heroku, я считаю, что это довольно общие вопросы тестирования/QA.

У меня есть докеризованное приложение Django, протестированное в dev с помощью Selenium и подтверждающее, что мои статические файлы правильно обслуживаются из моей локальной папки (EXPECTED_ROOT = '/staticfiles/'). Это приложение развернуто на Heroku, и я вижу (визуально и в инструментах разработчика), что статические файлы также корректно подтягиваются из CloudFront. Я хочу формализовать это с помощью того же теста, который я использую в dev. Мой первый вопрос связан с тем, используются ли/как переменные окружения для тестов:

  • Нужно ли мне добавить, например, EXPECTED_ROOT = 'https://<somehash>.cloudfront.net/' в качестве env var в Heroku и использовать его в Selenium-тесте?

Кроме того, для запуска этого теста в staging мне нужно будет установить Firefox в образ Docker, как я это делаю в dev. Возможно, это нормально в staging, но в prod я считаю, что должен стремиться к минимально возможному образу. Итак, вопрос заключается в различиях между staging и prod:

  • Нужно ли мне сохранить Firefox в моем staging-образе, запустить тесты, а затем отправить в продакшн копию этого Dockerfile, но теперь без firefox?
  • Любая помощь будет принята с благодарностью.

    Идея Config Var заключается в настройке конфигурационных переменных, которые отличаются в разных средах. При этом вы контролируете среду и можете определить то, что вам нужно.

    Лично я использовал бы другой подход: создал бы тест, который не зависит от среды (например, вместо тестирования expected root я бы подтвердил, что найден данный DIV ID или какой-то другой элемент).
    Этого будет достаточно, чтобы подтвердить, что тест прошел успешно и функциональность работает так, как ожидалось.

    Производственный Dockerfile действительно не нуждается в Selenium и может отличаться от staging.

    Вернуться на верх