다른 도커에서 도커 내의 MariaDB에 액세스
도커 컨테이너가 두 개 있습니다.하나는 표준 MariaDB 이미지를 기반으로 합니다.컨테이너의 이름은 "mariadb"이며, 그 안에 "fi"라고 불리는 데이터베이스가 있습니다.fi db는 내부에 몇 개의 테이블이 있으며, 각 테이블에는 몇 개의 데이터 행이 있습니다.DataGrip 또는 기타 데이터베이스 보기 소프트웨어를 사용하여 포트 3306을 사용하여 로컬호스트에서 데이터베이스를 호출하여 정상적으로 액세스하고 쿼리할 수 있습니다.
두 번째 Docker 컨테이너에서는 Spring Boot 응용 프로그램을 실행하고 있으며, 이 응용 프로그램은 MariaDB의 데이터에 액세스해야 합니다.도커에서 MariaDB를 실행하고 호스트 시스템에서 Spring Boot 애플리케이션을 실행하는 경우 연결 문자열 "jdbc:mariadb://localhost:3306/?user=myUsername&password=myPassword"를 사용하여 도커에서 MariaDB에 액세스할 수 있습니다.문제는 둘 다 다른 도커에서 실행하려고 하면 스프링 부트애플리케이션이 데이터베이스에 액세스 할 수 없다는 것입니다.도커 2개를 링크해 달라고 하는 사람도 많이 있습니다만, 이것으로는 문제가 해결되지 않는 것 같습니다.스프링 부트 도커를 실행할 때 "docker run -i -p 8080:8080 --link mariadb:db javaImage /bin/bash" 명령을 실행합니다.이 문제와 무관한 이유로 8080 포트를 공개합니다.제가 이해한 바로는 스프링 부트 도커 내의 환경변수가 되어 키워드 "db"를 사용하여 접근할 수 있습니다.이러한 변수는 MariaDB 도커의 실제 IP인 환경변수로 대체됩니다.
현시점에서는 접속을 확립하고 있는 Java 코드에서 접속 문자열 "jdbc:mariadb://db:3306/fi?user=myUsername&password=myPassword"를 사용하고 있습니다.그러면 "Could not connect: (연결할 수 없습니다)" 오류가 반환됩니다.알 수 없는 데이터베이스 'fi'입니다. 이 연결이 MariaDB 도커에 실제로 연결되어 있다면 fi 데이터베이스를 찾을 수 있습니다.
어떤 도움이라도 감사합니다.감사합니다!
편집: 코드 조각
Connection connection = DriverManager.getConnection("jdbc:mariadb://mariadb:3306/fi?user=myUsername&password=myPassword");
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ...;");
위와 같이 접속 문자열을 다음과 같이 변경.이제 "run -i -p 8080:8080 --link mariadb javaImage /bin/bash" 명령을 사용하여 컨테이너를 실행합니다.같은 결과, 접속을 시도했을 때 이 에러가 표시됩니다.Could not connect:알 수 없는 데이터베이스 'fi'입니다.
컨테이너의 이름이 mariadb일 경우 db가 아닌 URL에서 사용해야 합니다.
jdbc:mariadb://mariadb:3306/fi?user=myUsername&password=myPassword
링크에서도 mariadb를 사용해야 합니다.
docker run -i -p 8080:8080 --link mariadb javaImage /bin/bash
언급URL : https://stackoverflow.com/questions/44805243/accessing-a-mariadb-in-one-docker-from-another-docker
'programing' 카테고리의 다른 글
노드의 속편을 사용하여 레코드를 업데이트하려면 어떻게 해야 합니까? (0) | 2022.09.16 |
---|---|
MODIFY는 MariaDB에 다른 열 속성을 유지합니까? (0) | 2022.09.16 |
Python에서 메모리 사용량을 프로파일하려면 어떻게 해야 합니까? (0) | 2022.09.16 |
Rails 5 이행 데이터 유형의 문제 (0) | 2022.09.16 |
http를 사용하여 VUE의 CORS 문제를 해결하려면 어떻게 해야 합니까? (0) | 2022.09.16 |