Docker-如何使用 karaf 容器连接到 mysql 容器?

Docker-How do I connect to mysql container using a karaf container?

我在 karaf 上安装 kar 时在填充我的数据库时遇到了一些问题(我使用的是 liquibase)。 我使用 windows 10,但在 docker、karaf 4.2.1 和 mysql 5.7

中使用 linux 容器

有我做的步骤:

1-转到任务管理器并停止 mysql 服务。

2-Created 和 运行 一个 mysql 5.7 容器执行以下操作:

docker run --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

在 heidiSql 中使用 127.0.0.1 root/root 连接并创建了所需的数据库,因此在安装 kar liquibase 时将用数据填充它们。

3-将kar复制到我的karaf文件夹中的repo文件夹,将文件夹添加到.tar,然后gzip (.tar.gzip)

4-使用以下方法创建了我的 karaf 容器:

.\build.sh --from-local-dist --archive apache-karaf-with-kar.tar.gz

5-运行 karaf 在后台:

docker run -d -p 127.0.0.1:8101:8101 --name=karaf-container karaf

现在我使用 putty 和 ssh 连接到 karaf - localhost:8101。输入用户 karaf 并传递 karaf。 没问题,我执行了 kar:install 命令,kar install 但捆绑包处于宽限期。 我转到 heidiSql,发现数据库中没有数据。

我回到 karaf 连接,执行 feature:refresh,我得到如下错误:

 Error resolving artifact org.ops4j.pax.transx:pax-transx-features:xml:features:0.3.0: [Could not transfer artifact org.ops4j.pax.transx:pax-transx-features:xml:features:0.3.0 from/to central (http://repo1.maven.org/maven2/): Failed to transfer file: http://repo1.maven.org/maven2/org/ops4j/pax/transx/pax-transx-features/0.3.0/pax-transx-features-0.3.0-features.xml. Return code is: 501 , ReasonPhrase:HTTPS Required.]

我想这里的问题是我与 mysql 的连接无法正常工作。 一段时间后,ssh 连接断开(如果我在那里一段时间不做任何事情,我想这是正常的)。

我尝试创建一个 mysql-server 容器,但那样我什至无法使用 heidiSql 进行连接。

附加问题: 1-我在哪里可以找到 kubernetes 仪表板的 link?我在 docker 上找不到它。 2-我在尝试 docker 运行 karaf:

时遇到了第一个错误
\"karaf\": executable file not found in $PATH": unknown.

我解决了这个问题,因为我意识到我的 karaf 文件夹中的文件比下载的二进制文件少。 基本上,文件是您打开文件夹时看到的文件、build.md、许可证等... 所以我确实将这些文件复制粘贴到我的文件夹中,并且能够 运行 它。我问,因为这对我来说还是个谜...

感谢您的关注

编辑:尝试从任务管理器中停止 mysql-container 和 started mysql 并且相同,现在我确定由于某种原因它没有连接到数据库。所以我想问题是当我创建一个 karaf 容器时,可能我缺少一些配置。会继续努力

2天后终于找到问题了

首先,让我说一下,我也尝试过创建一个网络

docker network create mynet

并在 mysql-container 和 karaf-container 中使用了标签 docker run --network=mynet。 在我的钩子上,我确实尝试用 mysql-container:3306 替换 localhost 甚至在那之后它也没有用。

无论如何,要解决,我按照上面说的做了,再加上创建一个新的超级用户:

docker exec -it mysql-container mysql -u root -p

CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';

FLUSH PRIVILEGES;

之后,一切正常。

我会在这里留下一个有用的 link 有点难找,但它有很好的信息: https://codebeamer.com/cb/wiki/5854748

另外,对于我问的 2 个额外问题: 1- 仍然没有找到 kube 仪表板,老实说,没怎么找它。 2- 对于我在 build.sh 中看到的内容,它将搜索特定的文件夹名称 'apache-karaf',所以我认为如果您重命名文件夹并且它与 build.sh 不匹配,则会发生此错误.