IP адрес контейнера неверный

Есть конфигурация docker-compose.yaml

version: '3.1'
services:
  nginx-server:
    image: nginx:latest
    container_name: sasol-nginx-server
    ports:
      - "0.0.0.0:8081:80"
    volumes:
      - ./volumes/etc/nginx:/etc/nginx
      - ./volumes/html/:/var/www/html
      - ./volumes/logs/:/var/log/nginx
    restart: unless-stopped
    links:
      - php-fpm
      - mysql-server
    networks:.
     - alexus-network
  php-fpm:
    container_name: sasol-php-fpm
    build: ./build/php7.4
    volumes:
      - ./volumes/html/:/var/www/html
    restart: unless-stopped
    networks:.
     - alexus-network
  mysql-server:
    container_name: sasol-mysql-server
    build: ./build/mysql5.6.51
    ports:
      - "3306:3306"
    volumes:
      - ./volumes/mysql-data:/var/lib/mysql
      - ./volumes/etc/mysql:/etc/mysql/mysql.conf.d
    networks:
     - alexus-network
networks:
  alexus-network:
    driver: bridge

3 контейнера sasol-nginx-server, sasol-php-fpm и sasol-mysql-server после запуска контейнеры получают следующие IP адреса

  • sasol-nginx-server - 172.17.0.3 (виден извне как www.example.com:8081)
  • sasol-php-fpm - 172.17.0.2
  • sasol-mysql-server - 172.17.0.4

Все работало прекрасно.

В контейнере sasol-php-fpm был запущен cron task который делал http запрос к сайту www.example.com:8081/script.php (то есть к контейнеру sasol-nginx-server - 172.17.0.3) адрес клиента вызвавшего script.php определялся как 172.17.0.1 хотя по идее ожидался 172.17.0.2. Это был первый звоночек. Через некоторое время sasol-mysql-server стал определять подключаемых к нему клиентов как пришедших с 172.17.0.1, хотя подключения идут из контейнера sasol-php-fpm - 172.17.0.2. То есть клиент [sasol-php-fpm - 172.17.0.2] пытается подключиться к [sasol-mysql-server - 172.17.0.4]. А mysql его отвергает считая что подключение идет с 172.17.0.1

ip адреса я проверял bash скриптом запущенным с хоста

a=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sasol-mysql-server)
echo sasol-mysql-server $a

a=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sasol-php-fpm)
echo sasol-php-fpm $a

a=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sasol-nginx-server)
echo sasol-nginx-server $a

Укажите хотя бы направление куда копать


Ответы (1 шт):

Автор решения: Иван

Надо жёстко прописать адреса. А не кто как определится и потом будет конфликтовать с не своими данными от прошлой работы.

→ Ссылка