Я унаследовал устаревшее приложение, которое использует redis, mysql и postgresql. Ссылки на 127.0.0.1 и localhost есть везде.

Мой составной файл выглядит так:

version: '3.3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.2
    ports:
      - 9200:9200
  mysql:
    image: mysql/mysql-server:5.7.24
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
      MYSQL_ROOT_PASSWORD: ''
      MYSQL_ROOT_HOST: "%"
    ports:
      - target: 3306
        published: 3306
        protocol: tcp
        mode: host

  webapp:
    image: ubuntu/xenial
    hostname: webapp
    privileged: true
    ports:
      - target: 80
        published: 80
        mode: host

Читая документы, похоже, я могу установить только один network_mode для каждой службы, но я бы хотел использовать что-то вроде:

  network_mode: service:elasticsearch
  network_mode: service:mysql

Но это не представляется возможным, если я что-то упустил. Есть ли способ справиться с этим? Я просто хочу, чтобы localhost: 3306 и localhost: 9200 указывали на каждый сервис из сервиса webapp.

user2856029
источник