heavy_latest,latestheavy_next,nextlight_latestlight_nextYYYYMMDD-HHMMSS_heavy_latest,YYYYMMDD-HHMMSS_latestYYYYMMDD-HHMMSS_heavy_next,YYYYMMDD-HHMMSS_nextYYYYMMDD-HHMMSS_light_latestYYYYMMDD-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>:/workspacemounts 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.