Я настроил приложение Elixir/Phoenix в док-контейнере и отдельный контейнер для сервера Postgresql. Я могу подключиться к серверу Postgresql, только когда открываю порт 5432. Но я не хочу, чтобы порт был общедоступным, так как это довольно небезопасно. Сервер Postgresql должен быть доступен только из контейнера phoenix.
Но если я не открываю порт, я просто получаю сообщение об ошибке «Отказано в соединении» в контейнере phoenix.
app-phoenix-1 | 2016-03-15T11:41:32.701295542Z ** (Mix) The database for App.Repo couldn't be created, reason given: psql: could not connect to server: Connection refused
app-phoenix-1 | 2016-03-15T11:41:32.701369511Z Is the server running on host "POSTGRES" (10.7.0.7) and accepting
app-phoenix-1 | 2016-03-15T11:41:32.701395350Z TCP/IP connections on port 5432?
Я подключил сервис и не понимаю, почему он не работает. Postgresql запущен и работает.
В лог-файлах контейнера Postgres ничего нет.
Это результат docker ps
на моем узле:
8204a82ca192 myrepo/app "elixir --erl '-smp d" 37 seconds ago Up Less than a second 0.0.0.0:80->4000/tcp app-phoenix-1.585afb94
7a4dded80c36 postgres:latest "/docker-entrypoint.s" 2 hours ago Up 10 minutes 5432/tcp postgres-1.aed0697d
Каким-то образом контейнер Postgres блокирует все соединения из моего контейнера phoenix. Любая подсказка, как это исправить?
--link
, это должно работать. Также вы должны задержать контейнер приложения на несколько секунд, так как postgres может потребоваться время для загрузки. - person Xiongbing Jin   schedule 15.03.2016