(开包即用,不用看代码!)借助Docker自动构建SDKMAN镜像

开包即用,不用看代码!

如果着急使用可以直接使用我构建的镜像,请从配置镜像源开始看

关于SDKMAN

SDKMAN!‎‎是在大多数基于Unix的系统上管理多个‎‎软件开发工具包‎‎的并行版本的工具‎,
官方网站为

http://sdkman.io/

SDKMAN的安装很简单

$ curl -s "https://get.sdkman.io" | bash

不过在网络受到限制的情况下,就不适合自动安装了,此时可以借助Docker构建镜像,然后分发到目标设备。

由于SDKMAN是开源软件,所构建的镜像并不需要保密,因此可以借助Docker的镜像构建服务构建为公开镜像。

构建镜像脚本

在 https://github.com/ 上注册账号,我的账号为

https://github.com/huzhenghui

创建一个用于构建镜像的项目,本例为

https://github.com/huzhenghui/SDKMAN-Docker-Autobuild

其中包含一个用于构建镜像的文件

https://github.com/huzhenghui/SDKMAN-Docker-Autobuild/blob/master/Dockerfile

内容为

FROM debian:stretch

LABEL maintainer="[email protected]"

RUN apt-get update && \
    apt-get install -y curl unzip zip && \
    curl -s "https://get.sdkman.io" | bash

创建镜像仓库

在 https://hub.docker.com 上注册账号,我的账号为

https://hub.docker.com/r/huzhenghui/

创建一个用于保存镜像的仓库,本例为

https://hub.docker.com/r/huzhenghui/sdkman

按照Docker网站上创建仓库时的说明设置自动构建,完成后可在此看到相关信息
(本页面仅限于自己访问,请将链接中的用户名和仓库名替换为你自己的用户名和仓库名)

https://cloud.docker.com/app/huzhenghui/repository/docker/huzhenghui/sdkman/general

设置成功后,每次向 https://github.com/huzhenghui/SDKMAN-Docker-Autobuild 提交代码,即会自动触发构建。
构建成功后,可以在镜像仓库中看到公开的信息

https://hub.docker.com/r/huzhenghui/sdkman

配置镜像源

既然网络受到限制影响构建,那么也影响拉取镜像,此时可以使用更快捷的镜像源。
比较方便的是中国科学技术大学提供的镜像源,文档为

http://mirrors.ustc.edu.cn/help/dockerhub.html

本例中使用的是Boot2Docker,配置镜像源需要编辑文件

vi /var/lib/boot2docker/profile

在如下位置增加行

  EXTRA_ARGS='
  --label provider=hyperv
+ --registry-mirror=https://docker.mirrors.ustc.edu.cn
  '
  CACERT=/var/lib/boot2docker/ca.pem
  DOCKER_HOST='-H tcp://0.0.0.0:2376'
  DOCKER_STORAGE=aufs
  DOCKER_TLS=auto
  SERVERKEY=/var/lib/boot2docker/server-key.pem
  SERVERCERT=/var/lib/boot2docker/server.pem

修改后如下所示

EXTRA_ARGS='
--label provider=hyperv
--registry-mirror=https://docker.mirrors.ustc.edu.cn
'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=aufs
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem

拉取镜像

速度快到飞起来

docker pull huzhenghui/sdkman

查看效果

docker run -it --rm --entrypoint /bin/bash huzhenghui/sdkman -l -c 'sdk'

输出如下内容表示可以正常运行了

Usage: sdk  [candidate] [version]
       sdk offline 

   commands:
       install   or i     [version]
       uninstall or rm    <version>
       list      or ls   [candidate]
       use       or u     [version]
       default   or d     [version]
       current   or c    [candidate]
       upgrade   or ug   [candidate]
       version   or v
       broadcast or b
       help      or h
       offline           [enable|disable]
       selfupdate        [force]
       update
       flush             

   candidate  :  the SDK to install: groovy, scala, grails, gradle, kotlin, etc.
                 use list command for comprehensive list of candidates
                 eg: $ sdk list

   version    :  where optional, defaults to latest stable if not provided
                 eg: $ sdk install groovy

注意

由于sdk是一个function,因此需要-l参数

你可能感兴趣的:((开包即用,不用看代码!)借助Docker自动构建SDKMAN镜像)