Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run an electron app on docker

I've created a fork of a repository hosting an electron app which is a chat client: https://github.com/Serkan-devel/BetterDiscordApp-docker.

What I'm trying to do is to create a docker container with a GUI hooked to the own screen like at https://blog.jessfraz.com/post/docker-containers-on-the-desktop/ .

The dockerfile I've created goes like:

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"]

The start.sh file goes like:

./node_modules/.bin/electron ./src

After building the docker image and execute it with

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

I get the error code:

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

although I made the file executable and used the right amd64 architecture.

Has anyone figured it out how to make electron GUI's naitively over docker work?

like image 429
Patently Paul Avatar asked Oct 08 '16 08:10

Patently Paul


1 Answers

I will try to help you here in this answer - too long for comment.

I tried your Docker file on my Win10 and with the same problems. But I figured it out by adding required packages and successfully created docker image. Here is 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"]

and here is your start.sh

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

Actually I don't have access to your files and so on, but with this DockerFile was able to create docker image without problems. I also went inside docker container and check whether is possible to run electron - worked.

If you want to go into container, you just need to build docker image. I have done it by (simplest way) following command (open console where Dockerfile is located and run):

   docker build -t test-image .

After Successfully build of image you can run container. If any problems I recommend you to run container with bash entrypoint and debug what fails - bash will open in the same console where you type following script)

   docker run -it test-image bash
like image 107
VladoDemcak Avatar answered Sep 20 '22 20:09

VladoDemcak