Tengo un contenedor acoplable con aplicación de rieles web. También tengo una base de datos externa en mi máquina osx. Si ejecuto en osx:
psql "postgres://postgres:testing@0.0.0.0:5432/movies_development"corro bien
Si lo ejecuto en un contenedor, recibiré
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?¿Tiene alguna idea sobre cómo conectarse a una base de datos externa desde un contenedor? Gracias
Encontré una forma de conectar la aplicación en el contenedor docker a la base de datos local que se encuentra en mi osx.
0.0.0.0:5432 es una dirección de host local del contenedor (no un host local de osx) y debemos configurar uno nuevo:
listener_address: '192.168.0.102, localhost' del archivo de configuración de postgresql.Establezca la configuración de conexión en la aplicación a través de ENV como: postgres://postgres:testing@192.168.0.102:5432/movies_development
Puede haber dos razones según su pregunta:
EXPOSE 5432 durante la compilación de la imagen de la ventana acoplable? o antes de iniciar el contenedor con docker run -it -d --name $container_name -p 5432:5432 $image_name ? Si NO, entonces debe tener que hacer cualquiera de los cambios anteriores y luego puede conectarse a una base de datos alojada externamente.docker exec -it $container_name bash y ejecuta el comando este psql "postgres://postgres:testing@0.0.0.0:5432/movies_development" , entonces debe haber un cliente psql instalado en su contenedor acoplable con variable $PATH adecuada; de lo contrario, arrojará un error como comando no encontrado/no existe tal archivo o directorio.Espero que esta ayuda. ¡Gracias!