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 不匹配,则会发生此错误.
我在 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 不匹配,则会发生此错误.