Я столкнулся с той же проблемой при миграции базы данных и NuGet нажимает . Возможно, вы захотите запустить нечто похожее на вашей базе данных, например, миграции, начальные / тестовые данные и так далее. Это может быть решено двумя способами:
Переместите ваши операции с БД на ENTRYPOINT
, чтобы они выполнялись во время выполнения (когда контейнер БД работает и доступен).
Создайте свое изображение, используя docker build
вместо чего-то вроде docker-compose up --build
, потому что docker build
имеет переключатель под названием --network
. Таким образом, вы можете создать сеть в своем файле компоновки, вызвать БД с помощью docker-compose up -d db-container
, а затем обращаться к ним во время сборки с помощью docker build --network db-container-network -t your-image .
Я бы предпочел # 1, а не #2, если возможно, потому что
- проще: сеть присутствует только в файле docker-compose, а не в нескольких местах
- вы можете указать отношения usind зависимость_on иубедитесь, что они соблюдаются должным образом, не заботясь об этом вручную
Но в зависимости от действия, которое вы хотите выполнить, вы должны позаботиться о том, чтобы оно не выполнялось несколько раз, потому что оно выполняется на каждый запуск, а не только во время сборки (когда кэш очищался от изменений файла).
Тем не менее, в любом случае, я бы посчитал это наилучшей практикой при выполнении таких автоматизированных операций с БД, чтобы ожидать, что они могут выполнить более одного, и в любом случае должен создать ожидаемый результат (например, проверяя, является ли версия или изменение миграциинастоящее время).