Используя тестовые контейнеры для Scala dimafeng, я могу создать несколько контейнеров из одного образа:
class TestWithTwoDatabases extends FunSuite with ForEachTestContainer {
protected val inputContainer: PostgreSQLContainer = PostgreSQLContainer("postgres:13.3")
protected val outputContainer: PostgreSQLContainer = PostgreSQLContainer("postgres:13.3")
override val container: MultipleContainers = MultipleContainers(inputContainer, outputContainer)
// Some integration tests
}
Как отличить их в консоли докера? В настоящее время у меня есть:
CONTAINER ID IMAGE NAMES
a2bee9488c02 postgres:13.3 youthful_archimedes # I'd like to have inputContainer here
2c645ed1c54c postgres:13.3 agitated_cori # I'd like to have outputContainer here
Как указать имена контейнеров при их создании в Scala?
Я не думаю, что это возможно сделать. И непонятно, зачем вам это нужно.
Идея тестовых контейнеров заключается в том, что вы будете использовать их в своем коде и сможете различать их по ссылке, inputContainer
и outputContainer
в вашем случае. Он не предназначен для использования в форме загрузочной среды, такой как docker compose
, поэтому вы можете использовать его вне своего кода.
Кроме того, установка фиксированного имени для контейнера сделает невозможным запуск тестов, требующих одного и того же имени контейнера, в среде CI с общим механизмом Docker.
Использование сетей и сетевых псевдонимов может быть для вас обходным путем, но вариант использования мне все еще неясен.
На самом деле я просто хотел поставить точку останова в коде, а затем открыть оболочку в контейнере и посмотреть, что написано в postgres.
Вы можете получить идентификатор контейнера из сеанса отладки. У них есть методы получения имени/идентификатора контейнера
Я хотел это для целей отладки. Но я действительно забыл подумать о среде CI. Спасибо, что указали на это, я найду другой способ отладки моего кода.