Mysql ошибка соединения в док-станции wim2 apim / identity сервера - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть 3 dockerfiles для WIM2 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 Identity Server / apim работает нормально на портах 9444/9443 соответственно.Также в MySQL Docker создал базы данных regdb / apidb sql из папки datascripts на сервере apim / identity.

# 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>

Получениеошибка как показано ниже: enter image description here enter image description here Думая, что ошибка в URL-адресе jdbc: mysql: // localhost: 3306 / regdb, попытался дать localhost / ipDockerhost также все еще не работал.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Это связано с ошибкой при подключении к базе данных пользователей.Не могли бы вы проверить правильность имени пользователя и пароля, настроенных для этой базы данных?

0 голосов
/ 30 апреля 2019

Попробуйте изменить строку подключения 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

...