카테고리 없음

내 Docker 애플리케이션을 원격 데이터베이스에 연결하는 방법은 무엇입니까?

기록만이살길 2021. 2. 26. 11:20
반응형

내 Docker 애플리케이션을 원격 데이터베이스에 연결하는 방법은 무엇입니까?

1. 질문(문제점):


Docker에서 실행중인 2 개의 Spring 부팅 응용 프로그램이 있습니다.
두 응용 프로그램은 다른 컴퓨터에서 실행중인 Postgres 데이터베이스에 연결됩니다.
응용 프로그램을 컨테이너에 넣기 전에 localhost에서 ssh 터널을 만들어이 명령을 실행하는 데이터베이스가 포함 된 다른 컴퓨터에 연결했습니다.

> ssh -vnN *user*@*host* -p *port* -L 5433:user-host.local:5432

이런 식으로 application.properties 파일 에서 localhost : 5433설정 하여 포트 5432에서 실행되는 원격 데이터베이스에 연결할 수 있습니다. 이것은 SpringBoot 응용 프로그램의 application.properties 파일입니다.

>spring.datasource.url = jdbc:postgresql://localhost:5433/*database*...\
>spring.datasource.username = *user*\
>spring.datasource.password = *password*

그러나 이제 컨테이너에서 동일한 응용 프로그램을 실행하면 localhost 가 컨테이너 ip를 참조 한다는 것을 알고 있습니다. 그리고 원격 데이터베이스에 연결할 수 없습니다.
SSH 터널을 사용하여 동일한 원격 데이터베이스에 어떻게 액세스 할 수 있는지 모르겠습니다.

어떻게 할 수 있습니까?

2. 해결방안:

문제 해결됨!
같은 문제가있는 다른 사람의 경우 :

내 애플리케이션의 aplication.properties 파일 에서 spring.datasource.url 을 호스트의 IP를 가리 키도록 변경해야 했습니다.

새로운 application.properties

spring.datasource.url = jdbc : postgresql : // host_ip_here : 5433 / database ...
spring.datasource.username = 사용자
spring.datasource.password = 비밀번호

그런 다음 호스트 컴퓨터에서 ssh 명령을 실행하여 원격 데이터베이스에 연결할 수 있지만 이제는 매핑 포트 앞에 호스트의 IP를 추가합니다.
이런 식으로 포트 5433의 host'ip에 대한 모든 요청이 포트 5432 (기본 postgres 포트)의 database-machine-host로 전달된다는 것을 docker에게 알려줍니다.

ssh -vnN 사용자 @ 호스트 -p 포트 -L host_ip_here : 5433 : user-host.local : 5432

이 문제에 대한 다른 해결책이 있다는 것을 알고 있으므로 더 나은 해결책이 있으면 여기에 문자 메시지를 보내주세요!

65791125
반응형