0

How can a Docker container communicate with a local application that is not in Docker?

I have a Symfony container (PHP) and I want to communicate with a nodejs application for socket (so I need input and output for the 1337 port). How can I make a communication between these applications?

My docker-file:

version: "3.7"

volumes:
  db-data:

networks:
  dev:
    driver: bridge

services:

  mariadb:
    container_name: symfony_mariadb
    image: mariadb:10.9.3-jammy
    restart: always
    environment:
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_DATABASE: symfony
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - db-data:/var/lib/mysql
    expose:
      - 3306
    ports:
      - "3306:3306"

  phpmyadmin:
    container_name: phpmyadmin
    depends_on:
      - mariadb
    restart: always
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: mariadb
      PMA_USER: root
      PMA_PASSWORD: root
    ports:
      - "${PHPMYADMIN_PORT:-8081}:80"

  redis:
    container_name: redis
    image: redis:7.0.5-alpine3.16
    ports:
      - "6379:6379"
    volumes:
      - ./data/redis:/data/redis

  nginx:
    build:
      context: .docker/nginx
    restart: on-failure
    volumes:
      - ./:/var/www/server:cached
      - ./.docker/nginx/server.conf:/etc/nginx/conf.d/server.conf:cached
    ports:
      - "${NGINX_PORT:-8000}:80"
    depends_on:
      - php
      - mariadb
      - redis

  php:
    build:
      context: .docker/php
    restart: on-failure
    ports:
      - 5000:8000
    volumes:
      - ./:/var/www/server:cached
      - ./:/var/www/symfony
      - ./logs/symfony:/var/www/symfony/app/logs
      - ./.docker/php/php.ini:/usr/local/etc/php/php.ini:ro
    depends_on:
      - mariadb
      - redis
    user: "${ID_USER:-1001}:${ID_USER:-1001}"
jessy
  • 21
  • 4
  • If you're using Docker Desktop, the special hostname `host.docker.internal` will reach non-container processes on the host. On native Linux the setup is more complex. Both cases are described in the linked question. – David Maze Oct 05 '22 at 14:53

1 Answers1

0

Normally yo can see host machine port from docker, you try using host IP ?

Note: if this host IP is in a different network segment of internals IPs form dockers, like 192.168.1.28