У меня есть docker-compose.yml
, который запускает 2 службы (я исключил все несущественные данные из него).
app:
build:
context: .
dockerfile: ./docker/app/Dockerfile
image: ...
container_name: app-${ENV}
depends_on:
- db
expose:
- 80
db:
image: ...
container_name: my-cool-db
ports:
- "3306:3306"
Смысл здесь в том, что app
получает имя контейнера в зависимости от параметра.В общем, у меня есть сценарий оболочки, выполняющий следующее:
ENV=$1 docker-compose -p $1 up -d
Короче говоря, что бы я ни указывал в качестве параметра, новый контейнер приложения должен быть вызван.Например, если я сделаю sh initializer.sh first
, я получу app-first
контейнер.* Указан параметр -p
, поэтому я могу иметь несколько экземпляров одного и того же контейнера, классифицируемых как другой проект.
Если у меня один контейнер, это прекрасно работает, и в итоге я говорю:
app-first
app-second
app-third
Я бы хотел, чтобы все контейнеры использовали одну и ту же БД.Но когда я делаю docker-compose
, мой контейнер БД все еще хочет быть вызванным независимо от его существования.
Является ли проблемой то, что он пытается создать БД под другим именем проекта, но с тем же именем контейнера, что вызывает коллизию?
Можно ли это сделать, не вызывая 2 отдельных контейнера БД