2019年6月30日日曜日

code-server と vscode-java で java 開発環境を整える

cdr/code-server を試す。

codercom/code-server をベースイメージにして開発環境一式を整えれば、簡単に独自環境のコンテナを作れるっぽい。

前提

まずはコンテナに入って環境構築を試す

コンテナ起動

docker run -it --rm --entrypoint=/bin/bash -p 127.0.0.1:8443:8443 codercom/code-server

開発環境構築準備

インタラクティブモードで環境構築

# ベースのアップグレード
export http_proxy=http://host.docker.internal:3142
sudo apt-get update
sudo apt-get -y upgrade

# OpenJDK12 をダウンロード・配置・環境変数設定
curl -LO --silent https://download.java.net/java/GA/jdk12.0.1/69cfe15208a647278a19ef0990eea691/12/GPL/openjdk-12.0.1_linux-x64_bin.tar.gz
sudo mkdir -p /opt/java
sudo tar xf ./openjdk-12.0.1_linux-x64_bin.tar.gz -C /opt/java/
rm ./openjdk-12.0.1_linux-x64_bin.tar.gz
export JAVA_HOME=/opt/java/jdk-12.0.1
export PATH=${JAVA_HOME}/bin:${PATH}

# redhat-developer/vscode-java をダウンロードしてインストール
curl -LO --silent https://github.com/redhat-developer/vscode-java/releases/download/v0.46.0/redhat.java-0.46.0.vsix
code-server --install-extension ./redhat.java-0.46.0.vsix
rm redhat.java-0.46.0.vsix

# code-server 起動。お試しなので http, 認証なしで。
dumb-init code-server --allow-http --no-auth

動作確認

localhost:8443 にアクセスして vscode-java が有効になっていることを確認する。OK。

vscode-java(Language Support for Java(TM) by RedHat) が有効になっている
図1: vscode-java(Language Support for Java(TM) by RedHat) が有効になっている

Dockerfile 作成

Dockerfile

FROM codercom/code-server

LABEL maintainer "mikoto2000 <mikoto2000@gmail.com>"
LABEL version="1.0.0"
LABEL description "openjdk12+vscode-java"

# ベースのアップグレード
RUN sudo apt-get update && sudo apt-get -y upgrade \
    && sudo apt-get clean \
    && sudo rm -rf /var/lib/apt/lists/*

# OpenJDK12 をダウンロード・配置・環境変数設定
RUN sudo mkdir -p /opt/java
RUN sudo curl -L https://download.java.net/java/GA/jdk12.0.1/69cfe15208a647278a19ef0990eea691/12/GPL/openjdk-12.0.1_linux-x64_bin.tar.gz -o /tmp/openjdk-12.0.1_linux-x64_bin.tar.gz
RUN sudo tar xf /tmp/openjdk-12.0.1_linux-x64_bin.tar.gz -C /opt/java/
RUN sudo rm /tmp/openjdk-12.0.1_linux-x64_bin.tar.gz
ENV JAVA_HOME=/opt/java/jdk-12.0.1
ENV PATH=${JAVA_HOME}/bin:${PATH}

# redhat-developer/vscode-java をダウンロードしてインストール
RUN sudo curl -L https://github.com/redhat-developer/vscode-java/releases/download/v0.46.0/redhat.java-0.46.0.vsix -o /tmp/redhat.java-0.46.0.vsix
RUN code-server --install-extension /tmp/redhat.java-0.46.0.vsix
RUN sudo rm /tmp/redhat.java-0.46.0.vsix

curl の出力先を相対パス指定でその場に出力するようにしたら tar: ./openjdk-12.0.1_linux-x64_bin.tar.gz: Cannot open: No such file or directory と怒られてしまった。 仕方ないので /tmp に出力するようにした。

ビルド

docker build --build-arg http_proxy=http://host.docker.internal:3142 -t mikoto2000/code-server_vscode-java .

動作確認

docker run --rm -p "127.0.0.1:8443:8443" mikoto2000/code-server_vscode-java --allow-http --no-auth

localhost:8443 にアクセスして、 vscode-java の存在を確認。

lsp4snippet を clone して補完機能を試した。良い感じでは?

lsp4snippet で補完を試す
図2: lsp4snippet で補完を試す

以上。