Docker中的鳄梨酱图像获取空白登录页面

Posted

技术标签:

【中文标题】Docker中的鳄梨酱图像获取空白登录页面【英文标题】:Guacamole image in Docker getting blank login page 【发布时间】:2017-08-07 05:57:54 【问题描述】:

我在 CentOS VM box 版本 6.6 上为图像 guacd、guacamole 和 mysql 做了一个 docker pull。将它们配置为使用 glyptodon。但是当我打开网页时,我只得到一个空白页面,没有登录框架。鳄梨调味酱客户端图像堆栈跟踪显示未知数据库,我检查了两次为 guacamole.properties 设置的类路径,其中我提供了数据库连接,但在那里发现一切正常。我在这里一无所知。

缺少一些棘手的部分。任何人都好心地建议我在数据库配置中哪里出了问题,导致没有登录框架的空白页面。谢谢! 在此附上图片 -

【问题讨论】:

容器内的日志文件中是否有异常写入? Yes Gile,容器日志表明 UserMapper.xml 有问题或丢失。 ### 查询数据库时出错。 Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'guacamole_db' ### 错误可能存在于 org/apache/guacamole/auth/jdbc/user/UserMapper.xml ### 错误可能涉及 org .apache.guacamole.auth.jdbc.user.UserMapper.selectOne ### 执行查询时出错### 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'guacamole_db' 只是通过用户映射 xml 配置和 GUACAMOLE_HOME 设置。如果您让我了解此 xml 文件的使用以及如何以及在何处以最佳方式配置它,我会很高兴。谢谢! 【参考方案1】:

关于com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'guacamole_db',看来数据库还没有初始化。

仔细检查glyptodon/guacamole-docker README.md中写的db初始化步骤

初始化 MySQL

如果您的数据库尚未使用 Guacamole 架构进行初始化, 在使用鳄梨酱之前,您需要这样做。一个方便的脚本 用于生成执行此操作所需的 SQL 包含在 鳄梨酱图片。

生成可用于初始化新 MySQL 的 SQL 脚本 数据库as documented in the Guacamole manual:

docker run --rm glyptodon/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

或者,您可以使用附带的 SQL 脚本 guacamole-auth-jdbc.

生成此脚本后,您必须:

Create a database for Guacamole within MySQL, such as guacamole_db.
Create a user for Guacamole within MySQL with access to this database, such as guacamole_user.
Run the script on the newly-created database.

通过 MySQL 附带的 mysql 实用程序执行此操作的过程 记录在Guacamole manual。

【讨论】:

感谢您的友好回复。实际上,我已经根据您提供的上述手册使用推荐的架构完成了 guacamole_db 设置。但是我想我在部署 guacamole 时无法使用提供 mysql 配置的 guacamole.properties。您能否建议如何配置或设置路径 - 1. guacamole.properties 2. 在 localhost 上运行的 guacd tomcat 的位置(请看上面的图片)。我已经下载了 guacamole war,但未能提供数据库配置并将其部署在 guacd 默认 tomcat 服务器中。谢谢! guacamole.properties - guacd-hostname: localhost guacd-port: 4822 # MySQL 属性 auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvider mysql-hostname: localhost mysql-port : 3306 mysql-database: guacamole_db mysql-username: guacamole mysql-password: root # 从 lib-directory 读取额外 .jar 的位置:/var/lib/guacamole/classpath # Authentication provider class # BasicFileAuthenticationProvider 使用的属性 basic-user-映射:/etc/guacamole/user-mapping.xml 根据文档,我无法在 guacd 中找到默认服务器的 tomcat8 位置。我需要在哪里放置 guacamole.war 进行部署。我还需要下载和放置 mysql 连接器之类的 jar 吗?【参考方案2】:

在挖掘出文档后,我可以在 CentOS 6.6 上的 Docker 容器中运行 Guacamole,并最终能够像 charm 一样连接远程系统。

这是我遵循的以下步骤 -

1. yum install --nogpgcheck -y yum-utils

2. yum-config-manager \ --添加回购\ https://download.docker.com/linux/centos/docker-ce.repo

3. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. yum makecache 快

5. yum install --nogpgcheck docker-io

6. docker pull guacamole/guacd:0.9.11-incubating

7. docker pull guacamole/guacamole:0.9.11-incubating

8. docker pull mysql:8

9. docker run --name guacd -d guacamole/guacd:0.9.11-incubating

10. docker run --rm guacamole/guacamole:0.9.11-incubating /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

(我通过工作台手动运行 initdb.sql 脚本以在我的 guacamole db 中创建 guacamole 模式。)

11. docker run --name mysql -e MYSQL_DATABASE=guacamole -e MYSQL_USER=guacamole -e MYSQL_PASSWORD=guacamole -e MYSQL_ROOT_PASSWORD=guacamole -d -p 3306:3306 mysql:8

12. docker run --name guacamole --link guacd:guacd --link mysql:mysql -e MYSQL_DATABASE=guacamole -e MYSQL_USER=guacamole -e MYSQL_PASSWORD=guacamole -e MYSQL_ROOT_PASSWORD=guacamole -d -p 8080:8080 guacamole/guacamole:0.9.11-incubating

点击http://localhost:8080/guacamole

在登录页面输入 guacadmin/guacadmin 作为用户名和密码。完成!

Dockerizing 快乐..!!

感谢@Gile 提供帮助。

【讨论】:

【参考方案3】:

几天前,docker mysql 镜像已经更新,因此最新标签现在指向 8.0+ 而不是 5.7。不知道为什么,但 Mysql 8 似乎与 guacamole 0.9.14 不兼容。您可以通过将图像标签指定为 5.7 来简单地降级 mysql。

【讨论】:

【参考方案4】:

在新安装时遇到了同样的症状。 MySQL 配置为仅侦听环回适配器。将其更改为侦听“任何”网络连接,重新启动后一切正常。

【讨论】:

以上是关于Docker中的鳄梨酱图像获取空白登录页面的主要内容,如果未能解决你的问题,请参考以下文章

握手后 Websocket 立即断开连接(鳄梨酱)

无法使用鳄梨酱反向 VNC 连接

登录页面php代码在成功登录后无法在cpanel空白页面上运行

Wordpress:升级后无法登录 - 重定向到空白页面

Laravel:登录后的空白页面,然后检查角色

Google 登录 - “空白页” - 请稍等