如何将现有docker容器上的Spring启动应用程序链接到数据库?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将现有docker容器上的Spring启动应用程序链接到数据库?相关的知识,希望对你有一定的参考价值。

我想使用我的应用程序从一个docker容器与其他docker容器,一个用于postgres,一个用于solr

我的码头组成是:

version: '3'
services:
    core:
        build: ./core
        ports:
            - "8081:8081"
        environment:
            - "SPRING_PROFILES_ACTIVE=production"
        links:
          - postgresdb
          - solrdb
    postgresdb:
        image: postgres:9.4
        container_name: postgres
        ports: 
            - "5432:5432"
        environment:
            - DB_DRIVER=org.postgresql.Driver
            - DB_URL=jdbc:postgresql://localhost:5432/db
            - DB_USERNAME=db
            - DB_PASSWORD=db
        networks:
            default:
    solrdb:
       image: solr:5.5
       container_name: solr
       ports:
            - "8983:8983"
       environment:
            - DB_URL=http://localhost:8984/solr
       networks:
            default:
networks:
    default:
        external:
            name: mynet

我已经创建了solrpostgres的容器,只是我想使用它。我怎么能这样做?

答案

您已经公开了solrdb和postgresdb的端口。因此,在您的其他容器中,通过容器名称和公开端口访问这些Dbs。

例如,solrDb应该通过solrdb访问:8983和

应该通过postgresdb:5432访问postgresdb

编辑:确保两个容器都在同一网络中运行。您需要为所有容器添加此网络字段。

postgresdb:
    image: postgres:9.4
    container_name: postgresdb
    ports: 
        - "5432:5432"
    environment:
        - DB_DRIVER=org.postgresql.Driver
        - DB_URL=jdbc:postgresql://localhost:5432/db
        - DB_USERNAME=db
        - DB_PASSWORD=db
    networks:
      default:

并在所有docker文件的末尾

networks:
 default:
  external:
    name: <your-network-name>

并确保在启动这些容器之前运行预定义的网络。要创建网络:

docker network create --driver overlay --scope global <your-network-name>

注意:postgresdb:5432可以访问您的容器('postgresdb')

以上是关于如何将现有docker容器上的Spring启动应用程序链接到数据库?的主要内容,如果未能解决你的问题,请参考以下文章

Docker:如何启动现有容器并转发端口?

重新启动现有 docker 容器时如何指向初始运行时

如何将docker容器添加到现有docker网络

如何对 Docker 容器中运行的 Spring Boot 应用程序进行健康检查?

[Docker容器内的Spring Boot应用程序的log4j2日志

Spring Boot + MySQL docker 容器