Skip to content

Enterprise Java development in Emacs running in a Docker container

License

Notifications You must be signed in to change notification settings

tatsuya6502/docker-emacs-eclim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker-emacs-eclim

Enterprise Java development in Emacs running in a Docker container

Docker Repository on Quay.io

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 -- eclim brings Eclipse functionality to the Vim editor
  • Emacs Eclim -- emacs-eclim brings some of the great eclipse features to emacs developers. It is based on the eclim project
  • Auto Complete -- Auto completion with popup menu.

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. 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

What's Next?

I would recommend the following wiki and articles:

(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 in the container.

Special Thanks!

This Docker images was inspired by the following Japanese article:

Thanks Masato Shimizu for the article. It was very helpful!

About

Enterprise Java development in Emacs running in a Docker container

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published