В этом URL-адресе postgres:
- схема URL-адреса; это как https:
в https://stackoverflow.com
. Это не имеет никакого отношения к имени изображения или даже к деталям запуска в Docker.
Вы правильно понимаете опубликованный ports:
, а где во втором примере {DOCKER_IP}
- это заполнитель для IP-адреса хост-системы. В некоторых необычных обстоятельствах (в частности, при использовании Docker Toolbox в некоторых системах Windows) это будет не localhost
, а адрес виртуальной машины или какой-либо другой системы.
Другой пример, использование среды для укажите URL-адрес службы:
version: '3.8'
services:
proxy:
build: ./proxy
ports: ['8080:80']
environment:
- BACKEND_URL=http://backend:3000
backend:
build: ./backend
# ports: ['8081:3000']
Здесь бэкэнд - это обычный HTTP-сервер, а BACKEND_URL
- обычный HTTP-URL. Имя службы Compose backend
- это хост-часть URL-адреса. Вам не нужно специально публиковать sh ports:
, но если вы это делаете, порт для подключения - это номер второй (внутренний контейнер) порт. Вам не нужно объявлять networks:
, и Compose создаст для вас сеть default
.