Я разрабатываю веб-страницу с 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"]