Образ докера Ballerina с драйвером MySQL — как

используя балерину v.1.0.1. на Mac. На хосте я поместил драйвер MySQL в /Library/Ballerina/ballerina-1.0.1/distributions/jballerina-1.0.1/bre/lib , запустил код балерины, и я смог подключиться к БД.

Когда я создал образ докера с помощью команды build и закрутил докер в среде компоновки, он не удался с

Сообщение об ошибке приложения = ошибка в конфигурации соединителя sql: не удалось получить экземпляр драйвера для jdbcUrl=jdbc:mysql://mysql:3306/api_svc?serverTimezone=UTC: нет подходящего драйвера в ballerinax.java_jdbc:createClient(jdbc_client.bal:87) ballerinax .java_jdbc.Client:__init(client_endpoint.bal:27)

Вопрос: Как я могу правильно смонтировать драйвер MySQL в образе докера? Я не могу найти ссылку в документации.

Спасибо,


person lpastor    schedule 04.10.2019    source источник
comment
Вы используете аннотацию @docker для создания Dockerfile или у вас есть собственный Dockerfile?   -  person hYk    schedule 06.10.2019


Ответы (2)


Другой вариант — упаковать jar-файл драйвера MySQL с исполняемым jar-файлом вашей программы Ballerina. Таким образом, вам не нужно копировать файлы в контейнер докеров, потому что команда ballerina build создает автономный исполняемый файл jar со всеми зависимостями.

Для этого вам нужно создать проект Ballerina и модуль. Это руководство содержит дополнительную информацию о проектах Ballerina.

Затем скопируйте и вставьте следующий раздел в Ballerina.toml в каталоге вашего проекта.

[platform]
target = "java8"

    [[platform.libraries]]
    path = "<path-to-the-mysql-driver-jar-file>"
    modules = ["<name-of-the-ballerina-module>"]

person Sameera Jayasoma    schedule 04.10.2019
comment
да, это сработало как шарм ... Один вопрос: путь должен быть абсолютным или может быть относительным с уровня .toml? Я поставил свой драйвер на тот же уровень, и это сработало. - person lpastor; 06.10.2019
comment
Путь может быть относительным. Пример: github.com/ballerina-platform/ballerina-lang/blob/master/tests/ - person hYk; 06.10.2019

Вы можете копировать файлы в образы докеров, используя аннотацию @docker:CopyFiles. Пример:

@docker:Config {}
@docker:CopyFiles {
    files: [
        { sourceFile: "./conf/data.txt", target: "/home/ballerina/data/data.txt" }
    ]
}

@docker:Expose {}
listener http:Listener helloWorldEP = new(9090);

Проверьте этот пример: https://github.com/ballerinax/docker/tree/master/samples/sample5

Чтобы добавить его в дистрибутив балерины в образе докера, вы можете скопировать в эту цель:

@docker:CopyFiles {
    files: [
        { sourceFile: "./libs/mysql-driver.jar", target: "/ballerina/runtime/bre/lib/" }
    ]
}
person hYk    schedule 04.10.2019
comment
хм. проблема в том, что когда я подключаюсь к работающему контейнеру балерины в /home, там есть только папка балерины с моим модулем ‹file›.jar. Я не спокоен, просто вслепую засунул дайвера в несуществующую папку... Мне нужно попробовать и сообщить тебе - person lpastor; 06.10.2019