1

使用芭蕾舞女演员 v.1.0.1。在 Mac 上。在主机上,我将 MySQL 驱动程序放入 /Library/Ballerina/ballerina-1.0.1/distributions/jballerina-1.0.1/bre/lib ,运行 ballerine 代码,我可以连接到 DB。

当我使用build命令创建 docker 映像并在 compose env 中旋转 docker 时,它失败了

ApplicationError 消息 = 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)

问题:如何在 docker 镜像中正确挂载 MySQL 驱动程序?我在文档中找不到任何参考。

谢谢,

4

2 回答 2

3

另一种选择是将 MySQL 驱动程序 jar 与 Ballerina 程序的可执行 jar 文件打包在一起。这样,您不需要将文件复制到 docker 容器,因为ballerina buildcommand 会生成一个包含所有依赖项的自包含可执行 jar。

为此,您需要创建一个 Ballerina 项目和一个模块。本指南包含有关芭蕾舞女演员项目的更多信息。

然后,将以下部分复制并粘贴到Ballerina.toml您的项目目录中。

[platform]
target = "java8"

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

于 2019-10-04T04:56:24.850 回答
0

您可以使用 @docker:CopyFiles 注释将文件复制到您的 docker 映像中。例子:

@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 映像中的芭蕾舞演员分发中,您可以将其复制到此目标:

@docker:CopyFiles {
    files: [
        { sourceFile: "./libs/mysql-driver.jar", target: "/ballerina/runtime/bre/lib/" }
    ]
}
于 2019-10-04T02:37:50.240 回答