如何在 docker 上运行电子应用程序

2023-12-31

我创建了一个托管电子应用程序的存储库的分支,该应用程序是一个聊天客户端:https://github.com/Serkan-devel/BetterDiscordApp-docker https://github.com/Serkan-devel/BetterDiscordApp-docker.

我想做的是创建一个 docker 容器,其 GUI 连接到自己的屏幕,如下所示https://blog.jessfraz.com/post/docker-containers-on-the-desktop/ https://blog.jessfraz.com/post/docker-containers-on-the-desktop/ .

我创建的 dockerfile 如下所示:

FROM node:slim

COPY . /usr/scr/app

#RUN rm bdstart.sh

RUN npm install --save-dev electron

RUN npm install

#ENV FRESHINSTALL=true

CMD ["/usr/scr/app/start.sh"]

start.sh 文件如下:

./node_modules/.bin/electron ./src

构建 docker 镜像并执行后

docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --device /dev/snd dixord

我得到错误代码:

standard_init_linux.go:175: exec user process caused "exec format error"

尽管我使文件可执行并使用了正确的 amd64 架构。

有谁知道如何让 Electron GUI 在 docker 上自然地工作吗?


我会尽力在这个答案中帮助你——太长了,无法发表评论。

我在我的 Win10 上尝试了你的 Docker 文件,也遇到了同样的问题。 但我通过添加所需的包并成功创建了 docker 镜像来解决这个问题。 这是 Dockerfile

FROM node:slim

COPY . /usr/scr/app

#RUN rm bdstart.sh
RUN apt-get update

# I think you need to install following 
RUN apt-get -y install libgtkextra-dev libgconf2-dev libnss3 libasound2 libxtst-dev libxss1
RUN npm install --save-dev electron

RUN npm install

CMD ["/usr/scr/app/start.sh"]

这是你的start.sh

#!/bin/sh
./node_modules/.bin/electron ./src

实际上我无权访问你的文件等,但是有了这个 DockerFile 就能够毫无问题地创建 docker 镜像。我还进入了 docker 容器并检查是否可以运行电子 -worked.

如果你想进入容器,你只需要构建docker镜像。我已经通过(最简单的方法)以下命令完成了(open安慰Dockerfile 所在位置并运行):

docker build -t test-image .

成功构建镜像后,您可以运行容器。如果有任何问题,我建议您运行容器bash入口点并调试失败的内容 - bash 将在您键入以下脚本的同一控制台中打开)

docker run -it test-image bash
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 docker 上运行电子应用程序 的相关文章

随机推荐

  • 在 GitLab CI 上测试脚本之前执行 mysql 命令

    我想在执行测试脚本之前创建测试数据库 我已经包含了 mysql 服务 但我找不到运行 mysql 命令的方法 I run mysql in before script 但它一直抱怨 bin bash line 57 mysql comman
  • .Net 添加索引到数据表(数据集)

    有没有办法在 Net 中向数据表添加索引 我有一个包含大约 1 100 行的数据表 并且 datatable select 语句对于内存中操作来说似乎有点慢 table PrimaryKey new DataColumn table Col
  • 运行 spork 时出现错误:地址已在使用中

    我假设这是因为进程没有正确关闭 所以仍在运行 但使用top或ps我找不到它 有没有办法找到它的运行位置 或者让它强制重新打开端口 try sudo netstat lpn查看正在侦听哪些端口以及正在侦听哪些进程
  • 查找 LineString 与 turfjs 中的多边形边框相交的坐标

    Turfjs 有没有办法确定 LineString 与多边形边界相交的坐标 有多种方法可以确定一个点是否在多边形内 也有多种方法可以确定一个点是否在一条直线上等等 但我似乎无法找到一种方法来询问 这条线在什么点与这个多边形的边界相交 我可以
  • 如何访问字典中的第一个和最后一个元素?

    在发帖之前 我已经经历过在Python中访问字典中的任意元素 https stackoverflow com questions 3097866 python access to first element in dictionary 但我
  • 为什么我不能使用 Set:union() 而不是 Set.union?

    我正在学习 Lua 我宁愿使用冒号 的方法 不幸的是 它并不是在所有地方都有效 看我的代码 Set local mt function Set new m local set setmetatable set mt for a b in p
  • 如何使用 RabbitMQ-JMS 恢复消费者,或指定自定义异常处理程序?

    我正在尝试使用 RabbitMQ JMS 客户端 并有意创建了一个长 onMessage 侦听器来查看客户端将如何恢复 Context context new InitialContext rabbitMQ RMQConnectionFac
  • 如果构造函数中引发异常会发生什么[重复]

    这个问题在这里已经有答案了 可能的重复 如果派生类析构函数抛出异常 基类析构函数会发生什么情况 https stackoverflow com questions 4508533 what happens to base class des
  • 创建注册表项(和子项)?

    我正在尝试创建一个注册表项和子项 以便为计算机上的所有用户启用 IE 11 企业模式 这就是我当前用于 VBScript 的内容 但它失败得很厉害 不添加密钥 我需要一些帮助来纠正这个问题 Const HKEY LOCAL MACHINE
  • 如何删除 Eclipse 项目相关文件而不从 Eclipse 中删除源

    每当我们想要使用现有源位置创建 Eclipse 项目时 我们都会选择现有源位置 根 作为项目位置 Eclipse 将在该源的根目录中创建所有项目特定文件 现在 由于某种原因 如果我们想使用不同的设置重新创建项目 我们应该如何告诉 Eclip
  • 启用 Lambda@Edge 后调试 CloudFront 的问题

    下列的本文 https aws amazon com blogs apn using amazon cloudfront with multi region amazon s3 origins 我正在尝试从 AWS 内的多个区域 同一域下
  • JAVA 面向方面编程 - 运行时方面编织和类加载时方面编织

    我看到一篇关于 AOP 的文章 其中提到切面编织可以在编译时 类加载时和运行时发生 在java中 我可以想象 甚至可以理解 方面编织在编译时实际上是如何发生的 代理类是在类编译期间生成的 在项目上启用了方面 生成的字节码将具有代理代码 但我
  • .Net Twitter OAuth 如何执行成功的 GET 请求

    按照本教程 我能够成功向 Twitter API 发布帖子并更新我的状态 但是我在处理成功的 GET 请求时遇到问题 我正在尝试修改 Post 请求来完成此操作 但在我的网络异常上不断收到 无效协议 错误 以下是将发布状态更新的工作代码 h
  • 原则 2. orm:schema-tool:update 。设置开始ID

    当我使用 bin doctrine orm fixtures load使用示例数据填充表首先迁移设置自动增量表 ID 如 1 2 3 4 5 等 第二次之后orm fixtures load迁移命令它会清除所有数据并设置 id 如 5 6
  • 如何在 Vim 中设置工作/当前目录?

    因此 当我想使用 e 命令创建新文件时 我不想指定整个路径 而只想指定新文件名 能做到吗 正如已经建议的 您可以使用 autochdir 它将更改为您打开的文件的目录 另一个选项是 cd mydirectory 这将更改目录 这可以是绝对路
  • ruby - 覆盖方法然后恢复

    我正在尝试找到一种方法 可以覆盖方法 执行某些操作 然后在不留下任何工件的情况下进行恢复 我已经使用 mocha 实现了这个 但显然这不会在生产应用程序中运行 请注意 新方法有参数 而旧方法没有 示例如下 require rubygems
  • CSS 宽度和高度属性的最大像素值是多少?

    最大有效值是多少pxCSS 的值width and height属性接受吗 我目前正在构建一个网络应用程序 它创建一个非常大的可缩放容器元素 我想知道实际的限制是什么 在元素上使用某些浏览器附带的 CSS 检查器10000000000px
  • 从 javascript 运行 bat 文件

    我正在尝试使用 javascript 运行 bat 文件 我尝试过使用 powershell 但它似乎无法正常工作 这是我尝试过的代码 var oShell WScript CreateObject WScript Shell oShell
  • 将浮动栏添加到滚动视图,就像 Facebook iOS 应用程序的时间线中一样

    我一直在尝试向我的测试项目添加不同的交互 但在添加 Facebook 的帖子状态栏之类的东西时遇到了麻烦 该状态栏位于时间线滚动视图上 并在向下滚动时随滚动视图一起滚动视图 但当您向上滚动时仍停留在导航栏下方 我一直在创建一个单独的 UIV
  • 如何在 docker 上运行电子应用程序

    我创建了一个托管电子应用程序的存储库的分支 该应用程序是一个聊天客户端 https github com Serkan devel BetterDiscordApp docker https github com Serkan devel