Как подключиться из Docker к внешней БД? Например, к существующему Postgresql и Redis?

Для подключения к внешней базе данных из контейнера Docker, вам потребуется указать правильные параметры подключения в настройках вашего контейнера.

Начнем с PostgreSQL. Вам понадобятся следующие данные для подключения к существующей базе данных Postgresql:

1. Хост (IP-адрес или доменное имя) внешней базы данных.
2. Порт, на котором работает Postgresql (по умолчанию 5432).
3. Имя базы данных.
4. Имя пользователя и пароль для подключения к базе данных.

После получения этих данных, вы можете создать Docker контейнер, подключаясь к внешней базе данных посредством следующей команды:

docker run -d 
--name myapp 
-e POSTGRES_HOST=внешний_хост 
-e POSTGRES_PORT=порт 
-e POSTGRES_DB=имя_базы_данных 
-e POSTGRES_USER=пользователь 
-e POSTGRES_PASSWORD=пароль 
myapp_image

Здесь myapp - это имя вашего контейнера, myapp_image - имя образа Docker, который вы используете для вашего приложения. Вы также должны убедиться, что в вашем Dockerfile имеется инструкция ENV POSTGRES_HOST=внешний_хост, чтобы передать значение переменной окружения в контейнер.

Теперь перейдем к Redis. Для подключения к существующему Redis серверу, вам понадобятся следующие данные:

1. Хост (IP-адрес или доменное имя) внешнего сервера Redis.
2. Порт, на котором работает Redis (по умолчанию 6379).
3. Пароль, если он используется для подключения.

Аналогично, после получения этих данных, вы можете создать Docker контейнер, подключаясь к внешнему серверу Redis посредством следующей команды:

docker run -d 
--name myapp 
-e REDIS_HOST=внешний_хост 
-e REDIS_PORT=порт 
-e REDIS_PASSWORD=пароль 
myapp_image

Здесь myapp - это имя вашего контейнера, myapp_image - имя образа Docker, который вы используете для вашего приложения. Также вам нужно добавить инструкцию ENV REDIS_HOST=внешний_хост в ваш Dockerfile.

Обратите внимание, что в обоих случаях вам необходимо настроить контейнер и внешние БД для приема удаленных подключений, разрешив доступ с IP-адреса или диапазона IP-адресов контейнера Docker.