【问题标题】:How to run electron app inside docker image?如何在 docker 镜像中运行电子应用程序?
【发布时间】:2020-02-11 16:44:54
【问题描述】:

大家!

我想在 Win10 的 docker 镜像中运行一个 react-electron 应用程序(它是一个离线应用程序)。 我曾经通过运行npm start-win 然后npm start-electron-win 在Windows 上运行该应用程序。

这是我的 package.json 文件的一部分。

"scripts": {
    "start": "export BROWSER=none && export PORT=3005 && react-scripts start",
    "start-win": "set BROWSER=none && set PORT=3005 && react-scripts start",
    "start-electron": "export ELECTRON_START_URL=http://localhost:3005 && electron .",
    "start-electron-win": "set ELECTRON_START_URL=http://localhost:3005 && electron .",
  },

这是 Dockerfile。

# base image
FROM node:12.2.0-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
RUN npm install react-scripts@3.0.1 -g

# start app
CMD ["npm", "start"]
CMD ["npm", "start-electron"]

使用以下命令构建并启动 docker 后,

- docker build -t offline:dev .
- docker run -v ${PWD}:/app -v /app/node_modules -p 3005 --rm offline:dev

构建成功,没有任何错误,我可以在localhost:3005上浏览应用程序, 但我希望看到正在运行的电子桌面应用程序。

有没有人可以帮助我在 docker 上启动应用程序?

谢谢!

【问题讨论】:

  • 您在localhost:3005 上实际看到了什么?您可以与我们分享任何错误吗?
  • Docker 对于交互式桌面应用程序充其量是不方便的,并且您正在构建的映像不包含您尝试运行的应用程序。你希望在 Docker 中运行它有什么好处? (特别是因为 Electron 已经有 a well-defined distribution system。)

标签: reactjs docker electron


【解决方案1】:

您要查找的内容称为x11 转发

不幸的是,与使用 linux 发行版相比,使用正在运行的 docker 容器显示底层 UI 会有点棘手 - docker 容器几乎都是基于 linux 的。你不能真正挂载相关的unix socket

通常您只需将以下几行添加到您的图像中

RUN xhost local:root

并在安装插座的情况下运行

docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY

光明的一面,

似乎有一个安装简单的解决方案

  • VcXsrv
  • 使用服务器 ip 添加 $DISPLAY 环境变量

按照此处的说明进行操作

https://dev.to/darksmile92/run-gui-app-in-linux-docker-container-on-windows-host-4kde

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2023-02-21
    • 1970-01-01
    相关资源
    最近更新 更多