postgres не работает внутри docker контейнера - PullRequest
1 голос
/ 30 мая 2020

Я разрабатываю веб-страницу с golang, используя Postgres. Я мог запустить приложение без контейнера docker и подключиться к базе данных, никаких проблем не возникло. Однако, когда я закрепил свое приложение и запустил его, Postgres показал ошибку: наберите tcp 127.0.0.1:5432: connect: соединение отклонено.

Подключение к postgres:

db, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=postgres dbname=postgres sslmode=disable")

Я искал inte rnet и обнаружил, что внутри контейнера localhost будет направлять в контейнер. Я попытался подключиться, указав IP-адрес своего сервера:

db, err := sql.Open("postgres", "host=XXX.XXX.XX.XXX port=5432 user=postgres password=postgres dbname=postgres sslmode=disable")

, он также показал ту же ошибку: наберите tcp XXX.XXX.XX.XXX:5432: connect: соединение отклонено

когда Запускаю без докеризации работает нормально. Что делать?

Вот мой dockerfile. Я просто пытался загрузить на выделенный сервер простейшее приложение. Я вошел в систему с помощью s sh root@IP и установил go и postgres. Я вытащил свое приложение на сервер, а затем запустил его с помощью сборки go и ./app. Все нормально работало. Теперь я хочу запустить его, используя файл докеров ниже.

FROM golang:alpine RUN mkdir /app ADD . /app WORKDIR /app COPY go.mod . RUN go mod download COPY . . RUN go build -o main . CMD ["/app/main"]

1 Ответ

0 голосов
/ 30 мая 2020

После тщательной проверки комментариев @colm.anseo я понял, как получить доступ к хост-машине в контейнере docker. Я использовал флаг --network = "host" для запуска моего контейнера docker. Поэтому я использовал: docker run -it --network="host" myapp для запуска контейнера. Как я понял, это свяжет IP-адрес контейнера docker и хост-машины

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

...