Comunicar dos Docker Compose por separado usando un network. Ejemplo de Nginx Proxy Manager + PHP+MariaDB+PHPMyadmin

Tiempo de lectura: 2 minutos

Para conectar los dos Docker Compose por separado usando la misma red, necesitas crear una red personalizada en Docker y luego agregar todos los servicios de los dos Docker Compose a esa red personalizada.

Aquí está el archivo de Docker Compose actualizado para Nginx Proxy Manager con el nombre de la red personalizada my-network agregado:

version: '3.7'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      - ./dhparam:/etc/nginx/dhparam
    depends_on:
      - db
    networks:
      my-network:
        aliases:
          - proxy
    restart: always
  db:
    image: 'jc21/mariadb-aria:latest'
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql
    networks:
      my-network:
        aliases:
          - db
    restart: always

networks:
  my-network:
    driver: bridge

Aquí está el archivo de Docker Compose actualizado para PHP + MariaDB + phpMyAdmin con el nombre de la red personalizada my-network agregado:

version: '3.7'
services:
  web:
    image: php:7.4-apache
    ports:
      - "8000:80"
    volumes:
      - ./src:/var/www/html
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: myapp
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    depends_on:
      - db
    networks:
      my-network:
        aliases:
          - web
    restart: always
  db:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: myapp
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - ./data/mysql:/var/lib/mysql
    networks:
      my-network:
        aliases:
          - db
    restart: always
  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: password
    depends_on:
      - db
    networks:
      my-network:
        aliases:
          - phpmyadmin
    restart: always

networks:
  my-network:
    external: true

El archivo de Docker Compose para PHP + MariaDB + phpMyAdmin usa la red personalizada my-network creada por el Docker Compose para Nginx Proxy Manager. La última sección networks se asegura de que Docker Compose busque la red personalizada my-network creada en el Docker Compose para Nginx Proxy Manager.

Para ejecutarlos hay que poner esto:

docker-compose -p nginx-proxy -f /ruta/al/docker-compose-nginx-proxy.yml up -d && docker-compose -p php-app -f /ruta/al/docker-compose-php-app.yml up -d

¡Con esta configuración, ambos Docker Compose se comunican entre sí a través de la red personalizada my-network! Los servicios pueden acceder a otros servicios utilizando los alias configurados en las secciones networks de cada Docker Compose.

Por ejemplo, el servicio web en el Docker Compose de PHP + MariaDB + phpMyAdmin puede acceder al servicio de la base de datos en el Docker Compose de Nginx Proxy Manager utilizando el alias db. De manera similar, el servicio Nginx Proxy Manager puede acceder al servicio web en el Docker Compose de PHP + MariaDB + phpMyAdmin utilizando el alias web.

Deja un comentario