Code Server + Jdk17 的docker 镜像
基本内容
Dockerfile 示例:
|
|
先从 https://adoptium.net/zh-CN/temurin/releases/ 下载jdk文件
然后从 https://maven.apache.org/download.cgi 下载 maven 文件。
把下载好的文件和Dockerfile 放到同一个目录。之后执行命令: sudo docker build -t code-server-java:v0.2 .
成功之后就可以使用标签 code-server-java:v0.2
创建容器或者使用到docker compose 里面了。
把容器的 8080端口暴露出去就可以从主机访问code server 了。
当前版本的code server 并没有安装任何一个插件, 需要登录进去之后自行安装插件。 根据网络环境不同, 安装插件的耗时也不一样。
成功安装了maven for java 插件之后, 需要设置一下下面的选项, 否则会自动下载一个 maven 3.6.5
- Maven Executable Path: /opt/apache-maven-3.9.2/bin/mvn
成功安装了 Language Support for Java(TM) by Red Hat 插件之后, 在vs code 的 settings.json
文件里面添加内容
|
|
即可使用外部的JDK, 也会自动搜索到JDK的源码。
JAVA_HOME
和 MAVEN_HOME
这两个环境变量可以在终端中查看和使用。 但是 code server 的终端并没有应用 PATH
变量。
执行的时候需要这样: ${JAVA_HOME}/bin/java --version
, 稍微有点麻烦, 不过可以写一个脚本来自动处理。
使用 docker exec -it [container_id] /bin/bash
的方式获取的shell, 是应用了PATH
变量的。
笔者把自己打包的镜像上传到了 docker hub, 有需要的读者可以直接使用。
发布镜像到 docker hub
sudo docker login
登录账户sudo docker images
查看 image idsudo docker tag imageId username/repo:tag
sudo docker push username/repo:tag
推送到 docker hub
私有的 Registry 的流程应该也类似。
镜像更新
在创建了容器之后, 你可能会安装 vscode 的java相关的插件, 之后又下载了很多依赖包。
此时, 你可能会想, 如果基于此再做一个镜像的话, 新的容器就不用再下载这么多依赖了。
那么, 你可以使用这个命令: sudo docker commit container_id imagename
https://stackoverflow.com/a/52006170/11226492
使用 docker compose 运行java 程序
|
|
目录结构如下:
- docker-compose.yml
- data
- my-app.jar
- xxx
- xxx
这样不需要安装java 到本地就可以在容器里面运行java程序了。
其他
拓展阅读