#docker #docker-compose
#docker #docker-создать
Вопрос:
Есть ли какой-либо способ установить либо IP, либо, в идеале, идентификатор и имя хоста в моем файле hosts в моем файле docker-compose.yml? На данный момент я подключаюсь по SSH к своей базе данных docker через SequelPro, но если я запускаю более одной машины, я получаю разные IP, которые мне затем нужно каждый раз обновлять в SequelPro.
В идеале я не могу иметь возможность docker-compose up -d
, а затем иметь возможность посещать myproject.domain.com сразу, без необходимости каждый раз находить выделенный IP и изменять мой файл хоста или беспокоиться о том, что выделенный IP отличается.
Возможно ли это?
Ответ №1:
У вас есть несколько вариантов; какой из них лучше, действительно зависит от ваших конкретных потребностей. Вы говорите, что подключаетесь к своему контейнеру через SSH, но это звучит как обходной путь для чего-то: предположительно, ваш контейнер Docker предлагает какой-то полезный сервис, отличный от ssh, и это то, к чему вам на самом деле нужен доступ.
Самое простое решение — просто предоставить сетевой порт для этой службы на вашем хосте, используя директиву ports в вашем docker-compose.yaml
файле. Если вам просто нужен локальный доступ, вы можете сделать что-то вроде:
ports:
- "127.0.0.1:8001:8001"
Это предоставило бы контейнерный порт 8001 как порт 8001 на вашем локальном хосте. Если вам нужен внешний доступ к сервису (то есть доступ из какого-либо места, отличного от хоста docker), вы могли бы предоставить порт в интерфейсе хоста:
ports:
- "8001:8001"
В этом случае вы могли бы получить доступ к сервису как <your_host_name_or_ip>:8001
.
Если это не соответствует вашим потребностям, существуют решения, которые будут регистрировать имена контейнеров в DNS, но я не использовал их достаточно недавно, чтобы вносить предложения.