From 3cccf789dba336a22e13ccd4d310bf85e41e1a27 Mon Sep 17 00:00:00 2001
From: Tim Kluge <timklge@gmail.com>
Date: Wed, 26 Aug 2020 20:43:06 +0200
Subject: [PATCH] ref #1: Experimental vnc docker setup

---
 Dockerfile                           | 29 +++++++++++-----------------
 config.xlaunch                       |  2 --
 docker-run-mac.sh                    | 16 ---------------
 docker-run.bat => docker-run-vnc.bat |  5 +----
 docker-run-vnc.sh                    |  8 ++++++++
 docker-run.sh                        | 23 ----------------------
 vnc-entrypoint.sh                    |  4 ++++
 7 files changed, 24 insertions(+), 63 deletions(-)
 delete mode 100644 config.xlaunch
 delete mode 100644 docker-run-mac.sh
 rename docker-run.bat => docker-run-vnc.bat (56%)
 create mode 100644 docker-run-vnc.sh
 delete mode 100755 docker-run.sh
 create mode 100644 vnc-entrypoint.sh

diff --git a/Dockerfile b/Dockerfile
index 4cf621d..1584de1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,28 +1,21 @@
-FROM osrf/ros:melodic-desktop-full-bionic
+FROM henry2423/ros-vnc-ubuntu:melodic
 
-ARG uid=1000
-ARG gid=1000
+USER root
 
-COPY entrypoint.sh /entrypoint.sh
-RUN chmod +x /entrypoint.sh
+# Updated ros gpg key: https://github.com/henry2423/docker-ros-vnc/issues/1
+RUN apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key del 421C365BD9FF1F717815A3895523BAEEB01FA116
 
-ENV USERNAME ros
-RUN useradd -m $USERNAME && \
-        echo "$USERNAME:$USERNAME" | chpasswd && \
-        usermod --shell /bin/bash $USERNAME && \
-        usermod -aG sudo $USERNAME && \
-        echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME && \
-        chmod 0440 /etc/sudoers.d/$USERNAME && \
-        # Replace 1000 with your user/group id
-        usermod  --uid $uid $USERNAME && \
-        groupmod --gid $gid $USERNAME
+COPY ./vnc-entrypoint.sh /entrypoint.sh
+RUN chmod +x /entrypoint.sh
 
 RUN apt-get update && apt-get install -y \
       python-catkin-tools bash \
       mesa-utils libgl1-mesa-glx 
-WORKDIR /home/$USERNAME
-COPY src /home/$USERNAME/src
-RUN rosdep install --from-paths . -r -y
+COPY ./src /src/src
+WORKDIR /src/
+ENV ROS_DISTRO=melodic
+RUN apt-get update && rosdep install --from-paths . -r -y
 RUN catkin config \
       --extend /opt/ros/melodic && \
     catkin build
diff --git a/config.xlaunch b/config.xlaunch
deleted file mode 100644
index 04b7fae..0000000
--- a/config.xlaunch
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<XLaunch xmlns="http://www.straightrunning.com/XmingNotes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.straightrunning.com/XmingNotes XLaunch.xsd" WindowMode="MultiWindow" ClientMode="NoClient" Display="0" Clipboard="true" NoAccessControl="true"/>
diff --git a/docker-run-mac.sh b/docker-run-mac.sh
deleted file mode 100644
index 1e407c8..0000000
--- a/docker-run-mac.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-docker build . -t ceti-panda-gazebo-workspace
-
-XSOCK=/tmp/.X11-unix
-
-/usr/X11/bin/xhost + 127.0.0.1
-defaults write org.macosforge.xquartz.X11 enable_iglx -bool true
-
-docker run -it \
-    --volume=$XSOCK:$XSOCK:rw \
-    --env="LIBGL_ALWAYS_INDIRECT=1" \
-    --env="DISPLAY=host.docker.internal:0" \
-    --user="ros" \
-    ceti-panda-gazebo-workspace \
-    "$@"
\ No newline at end of file
diff --git a/docker-run.bat b/docker-run-vnc.bat
similarity index 56%
rename from docker-run.bat
rename to docker-run-vnc.bat
index 440af3a..c5d3bf3 100644
--- a/docker-run.bat
+++ b/docker-run-vnc.bat
@@ -1,10 +1,7 @@
-start config.xlaunch
-
 docker build . -t ceti-panda-gazebo-workspace
 
 docker run -it^
- --env="DISPLAY=host.docker.internal:0"^
- --user="ros"^
+ -p 5901:5901 -p 6901:6901^
  ceti-panda-gazebo-workspace^
  %*
 
diff --git a/docker-run-vnc.sh b/docker-run-vnc.sh
new file mode 100644
index 0000000..c0f40ed
--- /dev/null
+++ b/docker-run-vnc.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+docker build . -t ceti-panda-gazebo-workspace
+
+docker run -it \
+    -p 5901:5901 -p 6901:6901 \
+    ceti-panda-gazebo-workspace \
+    "$@"
\ No newline at end of file
diff --git a/docker-run.sh b/docker-run.sh
deleted file mode 100755
index a533680..0000000
--- a/docker-run.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-# http://wiki.ros.org/docker/Tutorials/GUI
-
-docker build . -t ceti-panda-gazebo-workspace \
-    --build-arg UID=$UID \
-    --build-arg GID=$GID
-
-XSOCK=/tmp/.X11-unix
-XAUTH=/tmp/.docker.xauth
-touch $XAUTH
-xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
-
-docker run -it \
-    --volume=$XSOCK:$XSOCK:rw \
-    --volume=$XAUTH:$XAUTH:rw \
-    --env="XAUTHORITY=${XAUTH}" \
-    --env="DISPLAY" \
-    --device=/dev/dri \
-    --group-add video \
-    --user="ros" \
-    ceti-panda-gazebo-workspace \
-    "$@"
\ No newline at end of file
diff --git a/vnc-entrypoint.sh b/vnc-entrypoint.sh
new file mode 100644
index 0000000..483d5fa
--- /dev/null
+++ b/vnc-entrypoint.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+source /opt/ros/melodic/setup.bash
+source /src/devel/setup.bash
+exec /dockerstartup/vnc_startup.sh $@
\ No newline at end of file
-- 
GitLab