Estoy usando Docker para Windows y me gustaría saber si cada contenedor podría tener su propia dirección IP que podría asignar en el archivo de host y asignar un nombre de host.

Actualmente, cuando ingreso http://localhost:8081/ en mi navegador, muestra mi aplicación Laravel (lo cual está bien). Sin embargo, en lugar de tener esa URL, quería que fuera algo como: http://myapp.local/ para darle un nombre más distintivo.

Como ejecutaré varios contenedores, lo más probable es que lo ejecute usando varios puertos así:

Http: // localhost: 8082 /

Http: // localhost: 8083 /

Y así..

Que debería mapear de tal manera:

Http: // localhost: 8082 = http: //anotherapp.local

Http: // localhost: 8083 = http: //andanotherapp.local

Aquí está mi docker-compose.yml

version: '3.7'
services:
  app:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    image: 'laravelapp'
    ports:
      - 8081:80
    volumes:
      - ./:/var/www/html
    container_name: laravelapp
  db:
    image: mysql:5.7
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: 'laraapp_db'
      MYSQL_USER: "homestead"
      MYSQL_PASSWORD: "secret"
      MYSQL_DATABASE: "laravelapp_db"
      MYSQL_ROOT_PASSWORD: "secret"
    volumes:
      - ./.database:/var/lib/mysql
    container_name: laraveldb
1
basagabi 25 ene. 2021 a las 12:44

1 respuesta

La mejor respuesta

Puede volver a trabajar localhost a something.local pero esto no incluye el puerto de la aplicación. Hay varias formas en que puede resolver esto (proxy inverso, extracción de Docker DNS, por nombrar algunas), pero la más cercana a su pregunta será cambiar las reglas de reenvío de puertos para incluir la dirección de escucha. A continuación, se muestra un ejemplo de su fragmento:

services:
  app:
    ports:
      - 127.0.10.10:80:80

Luego agrega una regla a su archivo de hosts:

127.0.10.10 something.local

Su configuración de puerto inicial (- 8081:80) era como forward any packet received by host's port 8081 to container's 80. 127.0.10.10:80:80 significa forward any packet received by host's port 80 on 127.0.10.10 IP-address to container's port 80.

Ahora puede asignar diferentes direcciones IP de bucle invertido a cada uno de sus servicios y agregar una regla correspondiente al archivo de hosts. Tenga en cuenta que, dado que se trata de direcciones IP de bucle invertido, no podrá acceder a ellas desde ninguna otra máquina de la red. Supongo que está bien para el entorno de desarrollo, si no lo es, necesita un proxy inverso.

1
anemyte 25 ene. 2021 a las 10:22