Я пытаюсь получить контейнер postgres, работающий на другом порту (5433 вместо 5432 по умолчанию) для нескольких сетевых потоков, таких как этот: https://github.com/docker-library/postgres/issues/196#issuecomment-310209118
(причина изменения порта заключается в том, чтонесвязанный проект, который я оставляю запущенным, уже использует порт 5432, поэтому я хотел бы иметь возможность запускать rspec одновременно для нескольких проектов.)
В моем тесте ENV у меня есть DATABASE_URL = postgresql: // postgres: @db.local: 5433 / test_agile_self
Все работало, когда я использовал порт 5432 (в DATABASE_URL и docker-compose.yml)
После изменения порта на 5433, когда я запускаю rspec, я получаю:
PG::ConnectionBad:
could not connect to server: Connection refused
Is the server running on host "db.local" (172.22.0.2) and accepting
TCP/IP connections on port 5433?
# ./spec/spec_helper.rb:62:in `block (2 levels) in <top (required)>'
Контейнер действительно работает на порту 5433 и IP-адресе 172.22.0.2:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8f5dee227e8 postgres:10.5 "docker-entrypoint.s…" 27 minutes ago Up 14 seconds 0.0.0.0:5433->5432/tcp zarc_db.local_1
$ docker inspect a8f5dee227e8 | grep "IPAddress"
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.22.0.2",
Мой docker-compose.yml использует ports: "5433:5432"
в соответствии с обсуждением, приведенным выше.
#docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "3010:3010"
volumes:
- .:/my_app
links:
- db.local
depends_on:
- db.local
db.local:
image: postgres:10.5
ports:
- "5433:5432"
Если я переключу 5433 обратно на 5432 в этих двух точках (ENV и docker-compose.yml), это снова будет работать.
Это включеноMac под управлением Mohave 10.14.3 и Docкер 18.09.2