...
以0.13.1为例,在 Docker 19.03+ 版本中可以使用 docker buildx build 命令使用 BuildKit 构建镜像。该命令支持 --platform 参数可以同时构建支持多种系统架构的 Docker 镜像。(例如linux/amd64,linux/arm64)
dockerfile如下:
在arm64系统中,很诡异的apt-get会失败,所以使用add来替代wget
只修改了第一行,将jdk 替换成了eclipse-temurin:11-jre-focal,因为这个JDK支持amd64、arm/v7、arm64/v8三种版本,并且是ubuntu-focal,可以正常使用apt-get
No Format |
---|
FROM --platform=$TARGETPLATFORM eclipse-temurin:11-jre-focal
RUN apt update \
# procps is for `free` command
&& apt install wget unzip lsof procps -y \
&& wget https://downloads.apache.org/iotdb/0.13.1/apache-iotdb-0.13.1-server-bin.zip \
# if you are in China, use the following URL
#&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/iotdb/0.13.1/apache-iotdb-0.13.1-server-bin.zip \
&& unzip apache-iotdb-0.13.1-server-bin.zip \
&& rm apache-iotdb-0.13.1-server-bin.zip \
&& mv apache-iotdb-0.13.1-server-bin /iotdb \
&& apt remove wget unzip -y \
&& apt autoremove -y \
&& apt purge --auto-remove -y \
&& apt clean -y |
No Format |
FROM --platform=$TARGETPLATFORM openjdk:11-jre-slim
ADD apache-iotdb-0.13.2-SNAPSHOT-all-bin/* /iotdb/
# rpc port
EXPOSE 6667
# JMX port
EXPOSE 31999
# sync port
EXPOSE 5555
# monitor port
EXPOSE 8181
VOLUME /iotdb/data
VOLUME /iotdb/logs
ENV PATH="/iotdb/sbin/:/iotdb/tools/:${PATH}"
ENTRYPOINT ["/iotdb/sbin/start-server.sh"] |
命令:安装buildx:
# 确定可以使用buildx,否则要升级docker
...
docker buildx use mybuilder
# 在mvn 编译完成之后,进入该路径,作为docker构建的目录
cd distribution/target/apache-iotdb-0.13.1-all-bin
# 构建并上传,只有2个操作系统是因为From使用的jdk只支持这两种系统
构建并上传
## apache/iotdb:latest
docker buildx build --platform linux/amd64,linux/arm64/v8,linux/arm/v7 -t apache/iotdb:latest -f ../../../docker/src/main/ Dockerfile-0.13.1-node . --push
## apache/iotdb:0.13.1-node
docker buildx build --platform linux/amd64,linux/arm64/v8,linux/arm/v7 -t apache/iotdb:0.13.1-node -f ../../../docker/src/main/ Dockerfile-0.13.1-node . --push
发布 Go client (如果有需要发布)
本地clone go client 代码
...