Вам действительно нужна внешняя сеть? Единственная возможная причина - вы хотите подключить к нему другие контейнеры. В противном случае не используйте его - вы сможете получить доступ к контейнерам с хоста только через механизм показа портов.
Если вы не собираетесь обращаться к базе данных извне docker-compose
, рассмотрите следующие изменения в файле:
- удалены ненужные вещи
- удаленные порты (внутри определенной пользователем сети вам не нужно показывать)
докер-compose.yml
version: '3.1'
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=foo
- MYSQL_USER=root
- MYSQL_PASSWORD=password
sample-application:
image: sample:latest
depends_on:
- mysql
environment:
- RAILS_ENV=production
- DATABASE_HOST=mysql
- DATABASE_USER=root
- DATABASE_NAME=foo
- DATABASE_PORT=3306
sample-service:
image: service:latest
depends_on:
- sample-application
При такой конфигурации вы можете обращаться к сервисам внутри сети по их именам, например, mysql
, sample-service
и sample-application
Кстати странная ситуация, когда сервис зависит от приложения, а не наоборот