Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tatsuya6502/docker-emacs-eclim
Enterprise Java development in Emacs running in a Docker container
https://github.com/tatsuya6502/docker-emacs-eclim
docker eclim eclipse emacs
Last synced: 23 days ago
JSON representation
Enterprise Java development in Emacs running in a Docker container
- Host: GitHub
- URL: https://github.com/tatsuya6502/docker-emacs-eclim
- Owner: tatsuya6502
- License: mit
- Created: 2015-09-02T02:49:45.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2015-09-02T05:34:15.000Z (about 9 years ago)
- Last Synced: 2023-03-11T06:18:41.762Z (over 1 year ago)
- Topics: docker, eclim, eclipse, emacs
- Language: Emacs Lisp
- Size: 141 KB
- Stars: 3
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# docker-emacs-eclim
Enterprise Java development in Emacs running in a Docker container
[![Docker Repository on Quay.io](https://quay.io/repository/tatsuya6502/emacs-eclim/status "Docker Repository on Quay.io")](https://quay.io/repository/tatsuya6502/emacs-eclim)
This container is powered by the following open source software
products:- **GNU Emacs 24** running in terminal (`emacs-nox`).
- **Eclipse Mars** with **OpenJDK 7**
- **[eclim](http://eclim.org/)** -- eclim brings Eclipse functionality
to the Vim editor
- **[Emacs Eclim](http://www.emacswiki.org/emacs/EmacsEclim)** --
emacs-eclim brings some of the great eclipse features to emacs
developers. It is based on the eclim project
* [how-to](http://www.skybert.net/emacs/java/)
- **[Auto Complete](http://www.emacswiki.org/emacs/AutoComplete)** --
Auto completion with popup menu.[`phusion/baseimage`](https://hub.docker.com/r/phusion/baseimage/) is
used as the base image, which is built upon Ubuntu 14.04 LTS.## Running the Docker Container
The Docker images is published at [quay.io](http://quay.io/tatsuya6502/emacs-eclim).
You can just pull the image and run it.```
$ docker run -it --name=emacs-eclim \
quay.io/tatsuya6502/emacs-eclim:latest \
/sbin/my_init -- su - docker
```This will start xvfb service in order to create a fake display for
Eclipse, and then drop you in a shell with `docker` user.### Start Eclipse via eclimd
Inside the container, start Eclipse via eclimd.
```
$ tmux
$ DISPLAY=:1 ./eclipse/eclimd
```You should wait for the following message before connecting from
Emacs.```
INFO [org.eclim.eclipse.EclimDaemon] Eclim Server Started on: 127.0.0.1:9091
```Alternatively, you can start eclimd with background option.
```
$ DISPLAY=:1 ./eclipse/eclimd -b
```### Start Emacs
Press `C-b c` to create a new tmux screen. Then start Emacs.
```
$ emacs
```Try to open the Eclipse project list by `M-x eclim-project-mode`.
This will open up a buffer `*eclim: projects*`.You can run `M-x eclim-project-create` to create a project. Or
`M-x eclim-project-import` to import an existing one in the
container's local file system.## Persisting Your Projects with Docker Volumes
Since this is a Docker environment, you will lose all changes in your
container when you kill it (unless you do `docker commit`).You can use Docker volumes with bind mount to map the host
directories/files to the container.For example,
```
$ docker run -it --name=emacs-eclim \
-v /path/to/myproject:/home/docker/workspace/myproject \
quay.io/tatsuya6502/emacs-eclim:latest \
/sbin/my_init -- su - docker
```Then change the owner of the project folder and files in the container
```
$ sudo chown -R docker:docker ~/workspace/myproject
```My Java projects are mirrored in remote git repositories via ssh
access and some of them uses Maven or Ivy. So I usually start the
container with something like the following:```
$ docker run -it --name=emacs-eclim \
-v /path/to/myproject:/home/docker/workspace/myproject \
-v /path/to/ssh:/home/docker/.ssh \
-v /path/to/gitconfig:/home/docker/.gitconfig \
-v /path/to/m2:/home/docker/.m2 \
-v /path/to/ivy2:/home/docker/.ivy2 \
quay.io/tatsuya6502/emacs-eclim:latest \
/sbin/my_init -- su - docker
```For further details about Docker volumes, see the
[Docker Cheat-Sheet](https://github.com/wsargent/docker-cheat-sheet#volumes)## What's Next?
I would recommend the following wiki and articles:
- [Emacs Eclim Project Home](https://github.com/senny/emacs-eclim) and
the [WiKi](https://github.com/senny/emacs-eclim/wiki)
- [Enterprise Java Development in Emacs](http://www.skybert.net/emacs/java/) --
How-to guide with screenshots
- [Emacs WiKi/EmacsEclim](http://www.emacswiki.org/emacs/EmacsEclim)## (Optional) Customizing Emacs
If you want to customize Emacs, edit the elisp files found in
`emacs.d/inits/` in this repository, and build a new Docker image
using the `Dockerfile`.## (Optional) X Window based Graphical User Interface
I have not tried this by myself, but you could run a remote desktop
server such as vnc or [`X2Go`](http://wiki.x2go.org/doku.php/doc:newtox2go)
in the container.## Special Thanks!
This Docker images was inspired by the following Japanese article:
- [Docker開発環境をつくる - Emacs24とEclimからEclipseに接続するJava開発環境](http://masato.github.io/2014/10/04/docker-devenv-emacs24-eclim-java/)
Thanks Masato Shimizu for the article. It was very helpful!