首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker apache guacamole - GUACAMOLE_HOME不会改变

Docker apache guacamole - GUACAMOLE_HOME不会改变
EN

Stack Overflow用户
提问于 2020-12-21 22:14:10
回答 1查看 778关注 0票数 0

我在docker-compose上使用apache guacamole,似乎不可能编辑tomcat HTML文件。我真的需要从控制面板中删除用户的“主页”按钮(ctrl + alt+ shift)

我尝试添加新的扩展名,但我不能,因为当我将GUACAMOLE_HOME设置为"/guacamole-home“时,我创建了一个新扩展名的根,它总是将它设置为默认的”/ .jar /.guacamole“。

我怎么才能让它工作呢?即使有另一种方法可以用另一种方法编辑鳄梨酱中的client.html

代码语言:javascript
复制
guacamole:
                image: guacamole/guacamole:latest
                depends_on:
                      - guacd
                      - postgres_gqm
                volumes:
                        - /root/api/program.jar:/opt/guacamole/program.jar
                        - /root/api/guacamole-home:/guacamole-home
                environment:
                        - "enable-environment-properties=true"
                        - "GUACD_HOSTNAME=guacd"
                        - "POSTGRES_DATABASE=guacamole_db"
                        - "POSTGRES_HOSTNAME=postgres_gqm"
                        - "POSTGRES_PASSWORD=pass"
                        - "POSTGRES_USER=guacamole_user"
                        - "GUACD_LOG_LEVEL=debug"
                        - "GUACAMOLE_HOME=/guacamole-home"
                links:
                     - guacd
                ports:
                     - 8080/tcp
                restart: always
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-24 18:01:46

我设法使用扩展名更改了guacamole上的tomcat HTML文件,但没有按照文档建议的方式进行更改。

首先,我将这个文件从容器guacamole复制到host:

代码语言:javascript
复制
docker cp <containerid>:/usr/local/tomcat /root/myhome
docker cp <containerid>:/opt/guacamole/bin/start.sh /root/myhome

然后,当我有了这些文件后,我就可以在我的本地主机上编辑tomcat/webapps/guacamole/app/client/templates/client.html下的client.html

因此,我进行扩展的方法是,首先转到我在本地主机上复制的start.sh脚本,并将此行添加到以下行号:

代码语言:javascript
复制
238:    ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT"
389:    ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" 

应该在start.sh上:

代码语言:javascript
复制
# Add required .jar files to GUACAMOLE_LIB and GUACAMOLE_EXT
ln -s /opt/guacamole/postgresql/postgresql-*.jar "$GUACAMOLE_LIB"
ln -s /opt/guacamole/postgresql/guacamole-auth-*.jar "$GUACAMOLE_EXT"
ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" #ADDED

还有这里:

代码语言:javascript
复制
# Add required .jar files to GUACAMOLE_LIB and GUACAMOLE_EXT
ln -s /opt/guacamole/mysql/mysql-connector-*.jar "$GUACAMOLE_LIB"
ln -s /opt/guacamole/mysql/guacamole-auth-*.jar "$GUACAMOLE_EXT"
ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" #ADDED

现在,我们需要对本地主机中的HTML和JS:进行所需的扩展和更改:

代码语言:javascript
复制
mkdir myExt
cd myExt

vi guac-manifest.json #创建guac-manifest.json

代码语言:javascript
复制
{   "guacamoleVersion" : "*",

    "name"      : "B-Override",
    "namespace" : "b-override",

    "html" : [ "client.html" ],
    "js": ["clientController.js"]
}

我想要更改client.html和clientController.js (如果您替换原始文件的名称并不重要,我选择不替换guac-manifest.json中的原始名称。

我想从用户面板菜单(ctrl+alt+shift)中删除连接下拉菜单+注销或返回主页的选项,所以我从复制到本地主机的tomcat文件中复制了原始的client.html:

代码语言:javascript
复制
cp ../tomcat/webapps/guacamole/app/client/templates/client.html .

还有:

代码语言:javascript
复制
cp ../tomcat//webapps/guacamole/app/client/controllers/clientController.js .

因为我想在虚拟机关闭时,去掉弹出窗口中的home和logout按钮(reconnect- home - logout)

现在,

我编辑了刚刚复制到myExt的文件:

代码语言:javascript
复制
vi client.html

我在文件的顶部添加了以下内容:

代码语言:javascript
复制
<meta name="replace-children" content=".menu .menu-content .header">

它替换了HTML中我想要的部分,我可以从文件中删除我没有编辑的部分,它只会替换原始文件中我在内容中添加的类

小例子:

代码语言:javascript
复制
<meta name="replace-children" content=".menu .menu-content .header">
    <div class="menu" ng-class="{open: menu.shown}" id="guac-menu">
        <div class="menu-content" ng-if="menu.shown">

            <!-- Stationary header -->
            <div class="header">
                <h2 class="connection-select-menu" ng-show="rootConnectionGroups">
                    <guac-menu menu-title="client.name" interactive="true">

你可以把我想要替换的代码中的类添加到内容中。在它前面(这就是我对如何替换部件的理解,我知道它与css文件有关,但这样更容易理解)

在我想要修改的js中,我没有删除我不需要修改的部分,因为它的工作方式不同,我转到"action =“,删除了HOMELOGGOUT选项,并像这样保存它,不需要文件头上的任何东西。

现在扩展已经准备好了,我们需要将其作为jar文件+卷,即start.sh to guacamole容器:

首先,我们需要安装这个来拥有jar选项:(ubuntu)

代码语言:javascript
复制
apt install default-jdk openjdk-11-jdk-headless fastjar openjdk-8-jdk-headless

然后我们走出myExt目录:

代码语言:javascript
复制
cd ..

jar cvf program.jar -C myExt .

现在我们转到docker-compose.yml并添加卷:

代码语言:javascript
复制
guacamole:
        image: guacamole/guacamole:latest
        depends_on:
              - guacd
              - postgres_gqm
        volumes:
                - /root/myhome/start.sh:/opt/guacamole/bin/start.sh #ADDED
                - /root/myhome/program.jar:/opt/guacamole/program.jar #ADDED
        environment:
                - "GUACD_HOSTNAME=guacd"
                - "POSTGRES_DATABASE=guacamole_db"
                - "POSTGRES_HOSTNAME=postgres_gqm"
                - "POSTGRES_PASSWORD=PassWrdGQM"
                - "POSTGRES_USER=guacamole_user"
                - "GUACD_LOG_LEVEL=debug"
        links:
             - guacd
        ports:
             - 8080/tcp
        restart: always

现在:

代码语言:javascript
复制
docker-compose down
docker-compose up -d ; docker-compose logs -f --tail=10 guacamole 

并查找扩展负载:

代码语言:javascript
复制
guacamole_1       | 09:50:10.683 [localhost-startStop-1] INFO  o.a.g.extension.ExtensionModule - Extension "B-Override" loaded.

如果您发现自己犯了一个错误,您可以随时返回并重试,方法是从本地主机删除/root/myhome/program.jar,返回到myEXT,重新复制client.html文件或对其进行编辑,再次将其关闭为jar和docker-compose down + up

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65394320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档