繁体   English   中英

如何在现有的Docker容器上将Spring Boot应用链接到数据库?

[英]How link a Spring boot app at existing docker container for database?

我想将我的应用程序从一个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的端口。 因此,在您的其他容器中,请通过容器名称和暴露的端口访问这些Db。

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

应该通过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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM