首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wso2 apim/标识服务器docker中的Mysql连接错误

wso2 apim/标识服务器docker中的Mysql连接错误
EN

Stack Overflow用户
提问于 2019-04-30 14:18:20
回答 2查看 197关注 0票数 0

我有3个server文件,分别用于WSO2 apim、身份服务器和mysql。使用docker-compose来运行这些。对应的docker-compose.yml如下所示:

代码语言:javascript
复制
    # 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 server中的datascripts文件夹创建了regdb/apidb sql数据库。

代码语言:javascript
复制
# 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,如下所示:

代码语言:javascript
复制
<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,试图给本地主机/ip的dockerhost也didn0t工作。

EN

回答 2

Stack Overflow用户

发布于 2019-04-30 14:34:36

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

<url>jdbc:mysql:jdbc:mysql://mysql-db:3306/regdb</url>

在组合中,服务可以通过它们的名称本身来访问。不需要使用links等。如果您有相互依赖的服务,您可以使用depends_onservice_healthy

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

票数 0
EN

Stack Overflow用户

发布于 2019-04-30 16:13:30

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55914963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档