【问题标题】:How to run an electron app on docker如何在 docker 上运行电子应用程序
【发布时间】:2016-10-08 08:14:22
【问题描述】:

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

我要做的是创建一个 docker 容器,其 GUI 连接到自己的屏幕,如 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 架构。

有没有人想出如何让电子图形用户界面在 docker 工作上更加天真?

【问题讨论】:

  • 这是您的start.sh 还是您只是复制并粘贴有问题的行?因为也许你错过了#!/bin/sh - shell 脚本的第一行
  • 然后我得到/node_modules/electron/dist/electron: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
  • 您在哪个操作系统上构建此映像?
  • 这是 lubuntu 16.04
  • 尝试apt-get install libgtk2.0-0 或使用root 用户运行start.sh

标签: javascript node.js docker electron dockerfile


【解决方案1】:

我会尽力帮助你回答这个问题 - 太长了,无法评论。

我在我的 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 容器并检查是否可以运行电子 - 工作

如果你想进入容器,你只需要构建 docker 镜像。我已经通过(最简单的方式)按照命令打开控制台Dockerfile所在的位置并运行)

   docker build -t test-image .

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

   docker run -it test-image bash

【讨论】:

  • 我已经实现了您的更改,重新构建映像并按照我之前的运行方式运行它,然后我得到错误No protocol specified。当使用 bash 运行它(如您所说)并执行 start.sh-file 时,我得到 ./start.sh: 4: ./start.sh: ./node_modules/.bin/electron: not found 作为错误。但是运行成功后有没有弹出窗口?
【解决方案2】:

我发现这个问题很有用,最后我想出了这篇文章来使它更容易:

https://medium.com/@calbertts/developing-electron-apps-in-macos-afd21b4a59e3#.avdge04d6

希望,你也觉得它有用。

【讨论】:

  • 我读了你的文章(很酷的东西!),我看到你正在使用你自己的名为“callbertts/node-gtk”的 docker 镜像,我想知道你使用什么节点 docker 镜像作为这个 gtk 的基础图片?我想看看我是否可以在不使用 Nut 的情况下获得相同的结果。我可以使用你的 docker 镜像,但我想知道它包含什么。
  • 我刚刚更新了 hub repo (hub.docker.com/r/calbertts/node-gtk),您可以在其中查看。
猜你喜欢
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多