>Java >Docker Compose + Spring Boot + Postgres 설명

Docker Compose + Spring Boot + Postgres 설명

WBOY
WBOY앞으로
2024-02-11 15:39:09944검색

PHP 편집자 Xigua는 오늘 Docker Compose를 사용하여 Spring Boot와 Postgres를 연결하는 방법에 대한 튜토리얼을 제공합니다. Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구인 반면, Spring Boot는 Java 애플리케이션 구축을 위한 프레임워크이고 Postgres는 강력한 관계형 데이터베이스입니다. 이 세 가지를 함께 사용하면 Spring Boot 애플리케이션과 Postgres 데이터베이스를 포함하는 개발 환경을 쉽게 구축할 수 있습니다. 이 튜토리얼에서는 세 가지 모두를 구성하고 연결하는 방법을 단계별로 학습하여 애플리케이션 개발을 빠르게 시작할 수 있습니다.

질문 내용

Postgres 데이터베이스와 작동하는 Java Spring Boot 애플리케이션이 있습니다. 두 가지 모두에 Docker를 사용하고 싶습니다. 처음에는 Postgres를 Docker에 넣고 docker-compose.yml 파일을 다음과 같이 정의했습니다.

으아아아

그런 다음 명령을 실행하면 sudo dockerdsudo docker-compose -f docker-compose.yml up 时,它正在启动数据库。例如,我可以使用 pgAdmin 进行连接,使用 localhost 作为服务器和端口 5432。然后,在我的 Spring Boot 应用程序中,在 application.properties 다음 속성이 파일에 정의됩니다.

으아아아

이 시점에서 Spring Suite를 통해 로컬로 Spring Boot 애플리케이션을 실행할 수 있으며 모든 것이 잘 작동합니다. 그런 다음 Spring Boot 애플리케이션을 Docker 이미지로 추가하고 싶습니다. 먼저 아래와 같이 프로젝트 디렉터리에 Dockerfile을 만들었습니다.

으아아아

그런 다음 mvn clean이 릴리스된 프로젝트 디렉토리에 들어간 다음 mvn install을 입력했습니다. 그런 다음 docker build -f Dockerfile -t Manager .를 실행하고 docker tag 9c6b1e3f1d5e myuser/manager:latest(ID가 정확함)를 실행하세요. 마지막으로 기존 mvn clean的项目目录,然后是mvn install。接下来,发出 docker build -f Dockerfile -t manager . ,后跟 docker tag 9c6b1e3f1d5e myuser/manager:latest (id 是正确的)。最后,我编辑了现有的 docker-compose.yml 파일을 다음과 같이 편집했습니다.

으아아아

그러나 이제 sudo docker-compose -f docker-compose.yml up 명령을 실행하면 데이터베이스가 다시 올바르게 시작되지만 오류가 발생하고 웹 애플리케이션 섹션의 코드 1로 종료됩니다. 문제는 연결 문자열입니다. 다른 것으로 바꿔야 한다고 생각하는데 어떻게 해야 할지 모르겠습니다. 다음과 같은 오류 메시지가 나타납니다:

으아아아

어떤 아이디어가 있나요?

해결 방법

각 컨테이너에는 자체 네트워크 인터페이스와 로컬 호스트가 있습니다. 따라서 Java가 Postgres를 가리키는 방식을 변경하십시오.

으아아아

받는 사람:

으아아아

db 올바른 Postgres IP를 확인합니다.

보너스. docker-compose를 사용하면 이미지를 수동으로 빌드할 필요가 없습니다. 그러니 바꿔보세요:

으아아아

받는 사람:

version: '2'
services:
    db:
        container_name: sample_db
        image: postgres:9.5
        volumes:
            - sample_db:/var/lib/postgresql/data
        environment:
            - POSTGRES_PASSWORD=sample
            - POSTGRES_USER=sample
            - POSTGRES_DB=sample
            - PGDATA=/var/lib/postgresql/data/pgdata
        ports:
            - 5432:5432

volumes:
    sample_db: {}

저도 같은 문제가 있었는데 이해하고 해결하는 데 시간이 좀 걸렸어요 :

으아아아

모든 부동산을 모두가 이해할 수 있도록 보여드립니다. application.properties:

으아아아

docker-compose.yml:

으아아아

로컬 데이터베이스를 사용하여 Spring 애플리케이션을 시작하려면 URL localhost를 사용합니다. 데이터베이스를 사용하여 컨테이너에 연결하려면 데이터베이스 서비스의 "localhost"를 변경해야 합니다. 제 경우에는 "localhost"을 "db"로 변경해야 합니다. 해결책: docker-compose.yml中添加SPRING_DATASOURCE_URL环境,重写spring.datasource.urlSPRING_DATASOURCE_URL 환경을 추가하고 spring.datasource.url 연결 값을 다시 작성합니다.

으아아아

사람들이 시간을 절약하는 데 도움이 되기를 바랍니다.

위 내용은 Docker Compose + Spring Boot + Postgres 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제