mysql - wso2 apim/identity server docker中的Mysql连接错误
问题描述
我有 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连接字符串-
<url>jdbc:mysql:jdbc:mysql://mysql-db:3306/regdb</url>
在 compose 中,服务可以通过其名称本身来访问。无需使用links
等。您可以使用depends_on
或service_healthy
在您有相互依赖的服务的情况下使用。
参考 - https://docs.docker.com/compose/compose-file/compose-file-v2/#depends_on
推荐阅读
- dailymotion-api - DailyMotion 视频说有地理限制,但 API 说没有地理限制。这里发生了什么?
- python - 如何在 Windows 操作系统上使用 setuptools 为 Cython 项目创建可执行文件?
- reactjs - React loses props inside array
- angular - “用户”类型上不存在 Ionic 3 属性“密码”
- scala - How does slick profile work with respect to slick DB
- c# - 通过 VSTS REST 客户端 API 下载多个 git 项内容的有效方法
- php - 检查一个集合是否包含另一个集合?
- bash - Unix 排序不是从第一个字符开始
- eclipse-cdt - Eclipse CDT:是否可以在没有输出的 Eclipse IDE 中定义工具?
- vba - 代码仅在单步执行代码时运行 - 竞争条件?