Применение обновления базы данных Entity Framework Core к серверу PostgreSQL в док-контейнере с SSH - PullRequest
0 голосов
/ 02 июля 2019

Я немного новичок в SQL и Docker. Я недавно создал контейнер для PostgreSQL на моем Linux-сервере, к которому может обращаться SSH. Я пытаюсь управлять им с помощью Entity Framework на .NET Core 2.2.

Я пытаюсь воспользоваться официальной документацией Npgsql , но нет никаких условий для подключения через SSH. Пример, который они предоставили для строки подключения:

optionsBuilder.UseNpgsql("Host=my_host;Database=my_db;Username=my_user;Password=my_pw")

Где:

  • my_host установлен на IP-адрес контейнера-докера .
  • my_db - это имя базы данных
  • my_user - это имя пользователя в PostgreSQL
  • my_pw - пароль базы данных

Я также использую это Первое консольное приложение EF Core в качестве учебного пособия. Когда я пытаюсь подключиться к Dotnet CLI:

dotnet ef database update

Время ожидания истекает, очевидно, потому что он не может подключиться к серверу через SSH.

Я сделал свою справедливую долю в поиске безуспешно. Кто-нибудь из вас может посоветовать, пожалуйста?

Редактировать К вашему сведению:

  • Я использую компьютер с Windows 10 в качестве клиента
  • Я использую Ubuntu Linux и подключаюсь через OpenSSH
  • Сервер Linux имеет Docker-контейнер с PostgreSQL
  • Я успешно подключился с моего клиента Windows 10 с помощью DBeaver

1 Ответ

0 голосов
/ 02 июля 2019

В принципе, подключение к PostgreSQL не выполняется через SSH - оно выполняется напрямую через порт 5432. Обычно вам необходимо настроить контейнер для предоставления этого порта (см. Документацию по докерской сети).

Можно использовать SSH-туннелирование для подключения к PG (или любой другой службе), но это довольно специализированный механизм для обхода межсетевых экранов и тому подобного. Скорее всего, вам просто нужно открыть порт 5432 из вашего контейнера.

...