我有3个用于WSO2 API,身份服务器和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的情况下运行时,Identity Server / 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驱动程序并添加了新的数据库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仍然没有用。
答案 0 :(得分:0)
尝试如下更改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
答案 1 :(得分:0)
这是由于连接到用户数据库时出错。您可以验证为此数据库配置的用户名和密码是否正确吗?