Connecting Two Separate Docker Compose Setups Using a Network: Nginx Proxy Manager + PHP + MariaDB + PHPMyAdmin

Tiempo de lectura: 2 minutos

Reading time: 2 minutes

To connect two separate Docker Compose setups using the same network, you need to create a custom network in Docker and then add all the services from both Docker Compose setups to that custom network.

Here is the updated Docker Compose file for Nginx Proxy Manager with the name of the custom network my-network added:

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

Here is the updated Docker Compose file for PHP + MariaDB + phpMyAdmin with the name of the custom network my-network added:

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

The Docker Compose file for PHP + MariaDB + phpMyAdmin uses the custom network my-network created by the Docker Compose for Nginx Proxy Manager. The last networks section ensures that Docker Compose looks for the custom network my-network created in the Docker Compose for Nginx Proxy Manager.

To run them, use the following command:

docker-compose -p nginx-proxy -f /path/to/docker-compose-nginx-proxy.yml up -d && docker-compose -p php-app -f /path/to/docker-compose-php-app.yml up -d

With this configuration, both Docker Compose setups communicate with each other through the custom network my-network! Services can access other services using the aliases configured in the networks sections of each Docker Compose.

For example, the web service in the Docker Compose for PHP + MariaDB + phpMyAdmin can access the database service in the Docker Compose for Nginx Proxy Manager using the alias db. Similarly, the Nginx Proxy Manager service can access the web service in the Docker Compose for PHP + MariaDB + phpMyAdmin using the alias web.

Leave a Comment