Netbeans in Docker

Не так давно я писал что успешно запустил PhpStorm в Docker. Сделано это было по одной простой причине - убогие шрифты в Java-приложениях. Из 3 известных Java-IDE хорошо шрифты отображаются только в Eclipse. Но лично мне он понравился меньше предыдущих двух вариантов (Intellij и Netbeans).
Решается проблема со шрифтами установкой патченой OpenJDK под названием TuxJDK. В Debian все работает сразу же после установки, а в Fedora 21 запущенные в ней приложения вообще теряют большую часть текста. Поэтому собственно я и принял решение поднять в Docker-контейнере свежий Debian 7 вместе с TuxJDK, и запускать приложения с хорошими, годными шрифтами.

Из 3 известных Java-IDE хорошо шрифты отображаются только в Eclipse.

Краткое описание того как прокидывать иксы в Docker я делал вот здесь на примере MySQL Workbench.

Краткий список действий:

[host]
1
2
3
docker pull debian:latest
XSOCK=/tmp/.X11-unix/X0
docker run --privileged -v $XSOCK:$XSOCK -v /your_folder:/root -it debian:latest /bin/bash

Затем устанавливаем tuxJDK и скачиваем установочный скрипт (netbeans-8.0.2-php-linux.sh). Предположим что скрипт вы скачали с хостовой машины и положили в your_folder которая прокинута в наш контейнер как /root

[container]
1
2
cd /root
./netbeans-8.0.2-php-linux.sh

Тут вы внезапно увидите графический инсталятор =)
После установки не помешает вынести дистрибутив Netbeans из контейнера наружу.
Я сделал это вот так:

[container]
1
2
mv /usr/lib/netbeans /root/
ln -s /root/netbeans /usr/lib/

Еще один момент, надо создать скрипт для запуска нашего приложения

[container]
1
vi /opt/p.sh

Вот его содержимое:

[container]
1
2
#!/bin/bash
/usr/lib/netbeans/bin/netbeans

Теперь нужно закоммитить содержимое нашего контейнера. Для этого открываем еще одну вкладку терминала на хосте.

[host]
1
2
docker ps
docker commit your_hash netbeans

Останавливаем наш контейнер и запиливаем Dockerfile вот с таким содержимым

[host]
1
2
3
FROM netbeans
ENV DISPLAY :0
CMD /opt/p.sh

Собираем наш контейнер

[host]
1
docker build -t netbeans - < Dockerfile

Теперь остался последний штрих - скрипт для запуска нашего Netbeans

[host netbeans.sh]
1
2
3
#!/bin/bash
XSOCK=/tmp/.X11-unix/X0
docker run --privileged -v $XSOCK:$XSOCK -v /your_folder:/root -v /your_projects_folder/:/work netbeans

Ну вот собственно и все! Теперь нашу IDE можно запустить просто набрав ./netbeans.sh

Лично я добавил у себя в редакторе меню новый пункт Netbeans, прикрутил туда красивую иконку и прописал путь до нашего netbeans.sh

Получилось как то так:
Меню Netbeans
Запущенный Netbeans