首页 > 解决方案 > 使用 localhost 和端口号连接到在 docker 容器内运行的 mysql

问题描述

我有 MySQL 和 tomcat 在两个单独的容器中运行的情况,我正在部署一个包含 hibernate.cfg.xml 的战争,并带有以下连接 URL <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/development_Blobs_001</property>

我有 docker-compose.yml 看起来像这样

services:

    database:
        build : database
        restart : always
        ports : 
           - "3306:3306"  #HOST_PORT:CONTAINER_PORT
        environment :
            MYSQL_USER : root
            MYSQL_ROOT_PASSWORD : password

    webapp:
        build : server
        ports : 
          - "8080:8080"
        links :
          - database

现在的问题是,如果我使用以下连接 URL,我可以连接到数据库

<property name="hibernate.connection.url">jdbc:mysql://database:3306/development_Blobs_001</property>

但是这需要在我的所有 hibernate.cfg.xml 中进行更改,我想避免这种修改,因为它很痛苦......我该如何解决这个问题?

我正在使用 docker-compose,它默认创建一个网络并在该网络中运行容器我可以使用容器名称来建立容器之间的通信,但我需要避免在我的所有 cfg.xml 文件中用容器名称替换 localhost ..

标签: dockerdocker-compose

解决方案


推荐阅读