【问题标题】:Mysql connection error in wso2 apim/identity server dockerwso2 apim/identity server docker中的Mysql连接错误
【发布时间】:2019-04-30 06:18:20
【问题描述】:

我有 3 个用于 WSO2 apim、身份服务器和 mysql 的 dockerfile。使用 docker-compose 来运行这些。对应的 docker-compose.yml 如下:-

    # docker-compose version
version: "3.7"

# services/containers to be run
services:
  wso2am:
    build: ./apim
    image: wso2am:2.6.0
    ports:
      - "9443:9443"
    links:
      - mysql-db
      - wso2is-km
  wso2is-km:
    build: ./is-as-km
    image: wso2is-km:5.7.0
    ports:
      - "9444:9444"
    links:
      - mysql-db
  mysql-db:
    build: ./mysql
    image: mysql:5.7.26
    ports:
      - "3306:3306"
      - "33060:33060"

在不将 h2 数据库更改为 mysql 的情况下运行时,身份服务器/apim 分别在端口 9444/9443 上运行良好。同样在 mysql 中,docker 从 apim/identity 服务器的 datascripts 文件夹中创建了 regdb/apidb sql 数据库。

# Derived from official mysql image (our base image)
FROM mysql:5.7
MAINTAINER Abhilash K R <abhilash.kr@aot-technologies.com>

ENV MYSQL_ROOT_PASSWORD root
# Add a user
ENV MYSQL_USER wso2carbon
ENV MYSQL_PASSWORD wso2carbon

# Add the content of the sql-scripts/ directory to your image
# All scripts in docker-entrypoint-initdb.d/ are automatically
COPY sql-scripts/ /docker-entrypoint-initdb.d
# expose ports
EXPOSE 3306 33060

添加 jdbc 驱动并添加新的 db url 如下:

<datasource>
            <name>WSO2_CARBON_DB</name>
            <description>The datasource used for registry and user manager</description>
            <jndiConfig>
                <name>jdbc/WSO2CarbonDB</name>
            </jndiConfig>
            <definition type="RDBMS">
                <configuration>
                    <url>jdbc:mysql://localhost:3306/regdb</url>
                    <username>wso2carbon</username>
                    <password>wso2carbon</password>
                    <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
                    <maxActive>50</maxActive>
                    <maxWait>60000</maxWait>
                    <testOnBorrow>true</testOnBorrow>
                    <validationQuery>SELECT 1</validationQuery>
                    <validationInterval>30000</validationInterval>
                    <defaultAutoCommit>true</defaultAutoCommit>
                </configuration>
            </definition>
        </datasource>

得到如下错误: 认为错误在 url jdbc:mysql://localhost:3306/regdb 处,试图给 dockerhost 的 localhost/ip 也仍然没有工作。

【问题讨论】:

    标签: mysql docker wso2 wso2is wso2-am


    【解决方案1】:

    尝试更改mysql连接字符串如下 -

    &lt;url&gt;jdbc:mysql:jdbc:mysql://mysql-db:3306/regdb&lt;/url&gt;

    在 compose 中,服务可以通过名称本身访问。无需使用links 等。如果您有相互依赖的服务,您可以使用depends_onservice_healthy

    参考 - https://docs.docker.com/compose/compose-file/compose-file-v2/#depends_on

    【讨论】:

    • 尝试了 mysql-db:3306/regdb 也得到了同样的错误
    【解决方案2】:

    这是由于连接到用户数据库时出错。能否验证一下为这个数据库配置的用户名和密码是否正确?

    【讨论】:

    • 是的,用户名和数据库是正确的。我可以通过 mysql bash 连接并查看数据库。
    猜你喜欢
    • 2023-01-12
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多