Подключение к бд на винде через докер на линухе

Здравствуйте, установил на linux mint докер и лерс учет, при подключение к бд, вылезает ошибка:

Не удалось подключиться к серверу БД. A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) Name or service not known
Проверьте введённые значения и попробуйте заново ввести реквизиты сервера БД.

Это получается что бд нужно на линукс ставить? не получится подключиться к бд, которая на винде стоит?

СУБД не обязательно должно стоять в контейнере с Сервером ЛЭРС УЧЕТ. Нам удавалось настроить подключение Сервера ЛЭРС УЧЕТ к СУБД SQL Server, установленном на Windows вне контейнера.

У вас судя по всему проблема с доступностью данной СУБД на Windows из контейнера Docker, где установлен Сервер ЛЭРС УЧЕТ. Данный вопрос вам стоит разрешить с вашим системным администратором.

Я полагаю что я что-то неверно сделал с самого начала. Вот мой yml файл

version: "3.9"
services:
  lers:
    image: lersamr/full:latest
    ports:
      - "3051:3051"
    volumes:
      - /var/LERS:/var/LERS
      - /etc/LERS:/etc/LERS

Я правильно понял, что это настройки для подключения локальной бд? Сис.админа нет, все абы как сами настраивали

Судя по всему в этом состоит основная проблема. Если системного администратора нет, вы можете пригласить стороннего специалиста.
Если все таки хотите разобраться самостоятельно, настоятельно рекомендую для начала изучить документацию по docker.

Условно это так. На самом деле приведенный вами файл не содержит каких либо настроек подключения к БД. Просто Сервер ЛЭРС УЧЕТ по умолчанию пытается подключиться к локальной СУБД SQL Server, если явно не заданы другие настройки подключения к БД.
Задать строку подключения к определенному СУБД вы можете в конфигурационном файле Сервера ЛЭРС УЧЕТ, который должен быть расположен в папке хранения настроек, указанную в yml файле (у вас это /etc/LERS). Также вы можете задать подключение к СУБД через переменные среды в контейнере docker, которые расположены в секции environment вашего yml-файла. За подключение отвечает переменная LERS_SERVER_DATABASE__ConnectionString. Например, ее значение может быть таким “Data Source=SQLServerAddress; Initial Catalog=LERS; User ID=User; Password=My_StrongPassword_123; Integrated Security=false”.

Также заметил, что вы зачем то в контейнере пробросили порт 3051, тогда как порт Сервера по умолчанию 10000. При таких настройках вы не сможете подключиться к Серверу даже, если он будет успешно запущен. Вам нужно либо пробрасывать порт 10000, либо изменить порт Сервера в настоечном файле или через переменную среды LERS_SERVER_NETWORK__ListenPort в yml-файле.

Вроде сделал как вы написали, однако все ровно подключается к локальной бд


Снимок экрана от 2023-08-16 08-49-51

Уточните, пожалуйста, почему после изменения настроек вы запустили установку Сервера? Вы ее еще ни разу не производили? Или вы полностью переустанавливаете ЛЭРС УЧЕТ в docker? Если вы полностью переустанавливаете ЛЭРС УЧЕТ, то переменная среды вам не понадобится, так как при установке вы можете задать СУБД. Переменная среды предназначена для уже установленного Сервера.

Также почему вы сделали одновременно перенаправление порта 10000 и указали порт Сервера 3051? Теперь Сервер слушает порт 3051, а контейнер перенаправляет порт 10000. В совем комментарии я писал:

Ранее вы писали

При таком подходе я бы все таки посоветовал вам обратиться к стороннему специалисту.

Сервер установлен на винде, мне нужно на линукс поставить рабочее место оператора, чтобы подключиться к серверу и считывать данные, проводить опрос и т.д. Запускал установку потому что думал что у меня не получилось подключиться к серверу и делал все по новой. Понял что ошибся, сейчас подключаюсь через команду docker compose up -d. Никаких ошибок нет, но и сделать ничего не могу, подозреваю дело в порту. Порт нашего сервера 3051, мне его куда нужно прописать? в ports или в Lers_server_network ?

На данном этапе нет необходимости обращаться к стороннем людям. Делается это для того чтобы самим разобраться как работает и все

Вам стоит изучить документацию по Docker, ссылку на которую я приложил ранее. Изучение структуры yml файла и за что отвечают настройки на мой взгляд дает понимание того как в целом работает docker-контейнер.

В настройках docker в ветке ports вы указываете перенаправление портов, то есть docker-контейнер будет занимать указанный порт на хост машине расположения и перенаправлять его на порт внутри контейнера.
В блоке environment указываются переменные среды docker-контейнера. Значение переменной среды LERS_SERVER_NETWORK__ListenPort Сервер ЛЭРС УЧЕТ использует при запуске беря из нее значение порта, который он будет прослушивать. Данная переменная аналогична параметру конфигурации listenPort.
Из всего этого следует, что для настройки подключения к Серверу ЛЭРС УЧЕТ по порту 3051 вам нужно настроить перенаправление docker-контейнером порта 3051 и чтобы Сервер ЛЭРС УЧЕТ слушал данный порт.

Спасибо, буду дальше пробовать