Вы путаете внутренние и внешние порты.База данных видна на порту 3306
внутри вашей сети, поэтому вам придется подождать на db:3306
, а не на 33061
.
Отображение портов не действует в пользовательской мостовой сети, созданной по умолчаниюdocker-compose
.Все порты видимы для контейнеров внутри сети по умолчанию.Когда вы открываете порт, вы делаете его видимым вне сети.
Также убедитесь, что ENTRYPOINT
для изображения prismagraphql/prisma:1.25
.Если это не /bin/sh -c
или другой тип оболочки, ваш command
не будет выполнен.
UPD
Если вы получаете ENTRYPOINT
в базовом изображении, отличном от /bin/sh -c
, вы можете переопределить его.Предположим, у вас есть /bin/sh -c /app/start.sh
, вы можете использовать следующую магию:
docker-compose.yml
...
services:
prisma:
entrypoint: ["/bin/sh", "-c", "'./wait-for-it.sh db:3306 && /app/start.sh'"]