es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Docker Compose en Azure: No se puede conectar a la base de datos.

Estoy intentando ejecutar el servidor SteVe OCPP en una instancia de contenedor de Azure. Sin embargo, la aplicación web no se conecta a la base de datos cuando se ejecuta docker-compose up en un contexto de ACI de Azure. Funciona perfectamente localmente.

Aquí está el archivo de composición de Docker:

version: “3.0”

volumes:
db-data:
external: false

services:
db:
image: mariadb:10.4
ports:
– 3306:3306
environment:
MYSQL_RANDOM_ROOT_PASSWORD: “yes”
MYSQL_DATABASE: stevedb
MYSQL_USER: steve
MYSQL_PASSWORD: changeme
web:
image: rainmakers/steve:latest
links:
– “db:mariadb”
ports:
– 8180:8180
– 8443:8443
depends_on:
– db

Esto es lo único que obtengo en los registros del servicio web:

2021/11/23 13:20:57 Esperando: tcp://mariadb:3306
2021/11/23 13:20:57 Problema con el dial: dial tcp: búsqueda mariadb en 168.63.129.16:53: no hay tal host. Durmiendo 1s
2021/11/23 13:20:58 Problema con el dial: dial tcp: búsqueda mariadb en 168.63.129.16:53: no hay tal host. Durmiendo 1s
2021/11/23 13:20:59 Problema con el dial: dial tcp: búsqueda mariadb en 168.63.129.16:53: no hay tal host. Durmiendo 1s
2021/11/23 13:21:00 Problema con el dial: dial tcp: búsqueda mariadb en 168.63.129.16:53: no hay tal host. Durmiendo 1s
2021/11/23 13:21:01 Problema con el dial: dial tcp: búsqueda mariadb en 168.63.129.16:53: no hay tal host. Durmiendo 1s
2021/11/23 13:21:02 Problema con el dial: dial tcp: búsqueda mariadb en 168.63.129.16:53: no hay tal host. Durmiendo 1s
2021/11/23 13:21:03 Problema con el dial: dial tcp: búsqueda mariadb en 168.63.129.16:53: no hay tal host. Durmiendo 1s

Esto continúa durante un minuto antes de que el servicio se termine.

¿Alguna idea de cómo proceder aquí?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí parece ser con la resolución DNS en el contexto de Azure ACI. La aplicación web intenta conectarse a la instancia MariaDB utilizando el nombre de host “mariadb”, que no está siendo resuelto correctamente en el contenedor. Esto es evidente a partir del error “no such host” en los registros.

    Para solucionar este problema, podemos intentar usar la dirección IP de la instancia MariaDB en lugar del nombre de host. Esto se puede hacer reemplazando “mariadb” con la dirección IP del contenedor que ejecuta el servicio MariaDB en el archivo docker-compose. Esta dirección IP se puede encontrar ejecutando el comando docker inspect <container-name> para el contenedor MariaDB.

    Alternativamente, podemos intentar usar un resolutor DNS personalizado para el contenedor que ejecuta la aplicación web. Esto se puede lograr agregando la siguiente línea al archivo docker-compose bajo el servicio web:

    dns:
      - <custom-dns-server>
    

    Reemplace <custom-dns-server> con la dirección IP de un servidor DNS que pueda resolver el nombre de host “mariadb”. Esto puede ser un servidor DNS público o un servidor DNS personalizado que se ejecuta en Azure.

    Una vez que se realicen estos cambios, ejecute docker-compose up nuevamente y verifique los registros para ver si se ha resuelto el problema.

Comments are closed.