heavy_latest
,latest
heavy_next
,next
light_latest
light_next
YYYYMMDD-HHMMSS_heavy_latest
,YYYYMMDD-HHMMSS_latest
YYYYMMDD-HHMMSS_heavy_next
,YYYYMMDD-HHMMSS_next
YYYYMMDD-HHMMSS_light_latest
YYYYMMDD-HHMMSS_light_next
Eclipse Theia is an extensible platform to develop full-fledged multi-language Cloud & Desktop IDE-like products with state-of-the-art web technologies.
See also:
The Theia IDE image of this repository comes in 2 flavors:
- light – A basic image based on Alpine with support for some common file syntaxes as JSON, XML etc.
- heavy – A feature-rich image based in Arch Linux with support for a bunch of languages and up-to-date development tools. See heavy/archpks/ for a list of supported languages and tools. Want to provide additional languages or tools? PRs are very welcome!
These images are shipped with some VSCode compatible plugins. These plugins are listed in light/plugins.txt
resp. heavy/plugins.txt
. Feel free to propose additional plugins by opening a PR!
Theia IDE is shipped in two versions: lastest
and next
. latest
is a stable version that is published occasionally and next
is built automatically from the Theia master
branch (which should usually be stable as well). For each flavor of this image there is a latest
and next
variant that uses the corresponding Theia version.
Each build tags the resulting images additionally with a timestamp (YYYYMMDD-HHMMSS
prefix). This allows to pin your setting to a specific build and revert to a previous image at any time.
These images use fixuid to adjust the user and group ID of the container user to match the IDs of the host user. Run Docker with -u <userid>:<groupid>
(e.g., -u $(id -u):$(id -g)
) to provide the IDs of your user. Now, the user that runs Theia has the same user and group ID as your host user and all files in /workspace
are writeable without permission problems.
These images use tini as init
process. That allows to stop the container with Ctrl + C
. See the README.md of tini
for more information why you should use a separate init
process like tini
.
The heavy
image provides root
rights via sudo
without password. You can remove sudo
by mounting the remove-sudo.sh
extension like this: -v /path/to/remove-sudo.sh:/entrypoint.d/
Start the images like this:
$ docker run -p 3000:3000 -u $(id -u):$(id -g) -v $(pwd):/workspace ludmann/theia-ide
-u <userid>:<groupid>
sets the user and group ID of the Theia user inside the container.-v <workspace path on host>:/workspace
mounts the workspace directory from the host.
After starting the container open http://localhost:3000 in your browser.
There are different ways to extend these images just by mounting files into the container. Every shell script that is mounted in the folder /entrypoint.d/
will be executed by source
in the entrypoint.sh
Bash script on container start. The extensions
folder has some examples. Besides that, every shell script that is mounted in /home/theia/.bashrc.d/
will be executed by source
in bash.rc
each time a new terminal is opened in Theia.
Additionally, you can mount a VSCode plugin into the folder /opt/theia/plugins/
. Not all VSCode plugins are supported yet but the compatibility is improving continuously.
You'll find the resulting Docker images on Docker Hub at ludmann/theia-ide. They are automatically build by Docker Hub on every push to this repository. Additionally, a build is automatically triggered on every push to the GitLab project corneliusludmann/theia, which automatically mirrors the official Theia GitHub repository. It triggers the build on Docker Hub with a GitLab webhook.
For every branch of this repository, a build will be triggered for the Theia versions latest
and next
. The images are tagged <branch>_latest
and <branch>_next
. This will be achieved with the Docker Hub hook hooks/build
. The master branch will be tagged latest
and next
as well (without the branch name). Additionally, the images will be tagged with a timestamp via the hook hook/post_push
to keep previous versions addressable.
Fell free to open this repository in Gitpod – the one-click web IDE based on Theia:
The repository is licensed under the MIT License.