Возникло исключение, которое, вероятно, связано с временным сбоем: подключите локальный PostgreSQL к контейнеру Docker.C#

Место общения программистов C#
Ответить
Anonymous
 Возникло исключение, которое, вероятно, связано с временным сбоем: подключите локальный PostgreSQL к контейнеру Docker.

Сообщение Anonymous »

Я пытаюсь получить доступ к PostgreSQL на сервере из контейнера Docker, в котором я запускаю приложение .net.
Мой файл Dockerfile содержит следующие переменные среды:

Код: Выделить всё

ENV DB_DATABASE=db_name
ENV DB_USERNAME=db_username
ENV DB_PASSWORD=db_pw
ENV DB_HOST=public IP (not localhost!)
ENV DB_PORT=port (not the standard 5432)
В Startup.cs я создаю строку подключения следующим образом:

Код: Выделить всё

string host =  Environment.GetEnvironmentVariable("DB_HOST").ToString();
string port =  Environment.GetEnvironmentVariable("DB_PORT").ToString();
string db_name = Environment.GetEnvironmentVariable("DB_DATABASE").ToString();
string db_username = Environment.GetEnvironmentVariable("DB_USERNAME").ToString();
string db_password = Environment.GetEnvironmentVariable("DB_PASSWORD").ToString();

string db_setting = String.Format("Host={0}; Port={1}; Username={2}; Password={3}; Database={4};",host, port, db_username, db_password, db_name);
Я уверен, что порт, IP-адрес и т. д. для базы данных не являются неправильными, поскольку они используются в других контейнерах Docker.
Ошибки, которые я получаю:

Код: Выделить всё

System.InvalidOperationException: An exception has been raised that is likely due to a transient failure.
---> Npgsql.NpgsqlException (0x80004005): Exception while connecting
---> System.Net.Sockets.SocketException (111): Connection refused
Файлы, в которых указана ошибка, представляют собой запросы к базе данных.

Подробнее здесь: https://stackoverflow.com/questions/712 ... re-connect
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»