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.

Cómo conectarse a la imagen de Firebird en Docker, utilizando una ruta de archivo de Docker?

Tengo una imagen de base de datos Firebird en ejecución en el puerto 3050, necesito acceder a un archivo dentro de esa imagen a través de una URL, para poder crear una conexión de Firebird (sí, Firebird requiere una ruta de archivo), pero no puedo encontrar el archivo utilizando la URL.
¿Existe alguna forma de exponer un archivo dentro del contenedor Docker y hacerlo accesible a través de una URL? Por ejemplo: localhost:3050/databases/test.fdb << Necesito conectarme a esto a través de DBeaver.

https://i.stack.imgur.com/iJ4ny.png: se está ejecutando normalmente en el puerto 3050.

https://i.stack.imgur.com/q87vz.png: aquí está el archivo al que necesito acceder a través de una URL (ubicado en /databases).

https://i.stack.imgur.com/ow1LZ.png: así es como estoy intentando conectarme.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder a un archivo dentro de un contenedor de Docker a través de una URL, es necesario exponer el archivo utilizando un volumen. En este caso, puedes usar la bandera -v al ejecutar el contenedor para montar el directorio /databases como un volumen.

    Por ejemplo:

    docker run -p 3050:3050 -v /ruta/hacia/directorio/local/databases:/databases firebird:2.5
    

    Este comando montará el directorio /ruta/hacia/directorio/local/databases de tu máquina anfitrión en el directorio /databases dentro del contenedor.

    Una vez que el volumen esté montado, puedes acceder al archivo a través de una URL agregando un nuevo punto final (endpoint) a tu contenedor Docker que sirva el archivo. Esto se puede lograr instalando un servidor web como Nginx o Apache dentro del contenedor y configurándolo para servir el archivo, o utilizando un simple script en Python para servir el archivo.

    Por ejemplo, puedes utilizar el siguiente script en Python (guardado como serve.py) para servir el archivo:

    from flask import Flask, send_file
    
    app = Flask(__name__)
    
    @app.route('/databases/<path:filename>')
    def serve_file(filename):
        return send_file('/databases/' + filename)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=80)
    

    Luego, puedes ejecutar el contenedor con el siguiente comando:

    docker run -p 3050:3050 -v /ruta/hacia/directorio/local/databases:/databases myimage:latest python /ruta/hacia/serve.py
    

    Este comando iniciará el contenedor y ejecutará el script de Python para servir los archivos.

    Finalmente, puedes acceder al archivo a través de una URL al añadir el nombre del archivo a la URL del contenedor:

    http://localhost:3050/databases/test.fdb
    

    Ahora puedes utilizar esta URL para conectarte a la base de datos de Firebird.

Comments are closed.