我有3个server文件,分别用于WSO2 apim、身份服务器和mysql。使用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 server中的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,试图给本地主机/ip的dockerhost也didn0t工作。
发布于 2019-04-30 14:34:36
尝试更改mysql连接字符串,如下所示-
<url>jdbc:mysql:jdbc:mysql://mysql-db:3306/regdb</url>
在组合中,服务可以通过它们的名称本身来访问。不需要使用links等。如果您有相互依赖的服务,您可以使用depends_on或service_healthy。
Ref - https://docs.docker.com/compose/compose-file/compose-file-v2/#depends_on
发布于 2019-04-30 16:13:30
这是由于连接到用户数据库时出错造成的。您能验证一下该数据库配置的用户名和密码是否正确吗?
https://stackoverflow.com/questions/55914963
复制相似问题