构建 flink 1.13.0 docker image

生产有bug,对flink源码做出修改,build flink 源码后需要build flink docker 供生产使用。

docker images 环境准备

window 11,docker desktop,可用的科学环境,flink-docker
docker build的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。 在构建时,需要注入http_proxy等参数 build 需要下载一些uninx 文件以及 flink.tar 包,确保网络无障碍后在 build。同理,配置 http 代理端口。(科学地址宿主机ip,允许局域网内连接)。

Dockerfile 准备

从 flink-docker 的 7810aea07f6d365a7da2ebb986937a7b5e4d709f 提交创建一个新分支
使用的 docker file 为 1.13/scala_2.11-java8-debian/

git checkout -b tag-1.13 7810aea07f6d365a7da2ebb986937a7b5e4d709f

另外需要注意,window 下编译的 flink,需要修改下 shell 脚本的回车换行符

sed -i 's/\r$//g' xxx;

由于我是需要build 自己的flink code,需要修改几处 DockerFile

# 修改配置
CHECK_GPG=FALSE
# 添加flink 源
# copy flink.tgz to dirname path
COPY flink-1.13.0-bin-scala_2.11.tgz flink.tgz

# 注释掉
# wget -nv -O flink.tgz "$FLINK_TGZ_URL"; 

# 修改shell 格式
# set fileformat=unix
find ./bin -regex ".*sh\\|.*flink" |  xargs sed -i 's/\r$//g'; \
chmod a+wx ./bin/*; \

# 修改 docker-entrypoint
# set fileformat=unix
RUN set -ex; \
    sed -i 's/\r$//g' /docker-entrypoint.sh;

最终修改的Dockerfile 放在文末。

上build,科学给力的话,build 蛮快的

docker build --pull --no-cache \
 --build-arg "HTTP_PROXY=http://192.168.10.xx:10809" \
 --build-arg "HTTPS_PROXY=http://192.168.10.xx:10809" \
 --build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \
 -t  xxx/my-flink:1.13.0-scala_2.11-java8 . 

build 完成后

贴一下 flink 1.13.0 build 命令

一堆跳过: 跳过test 执行,跳过文档编译,跳过代码格式检查,跳过 license 检查,跳过web-ui编译

mvn clean source:jar install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -Drat.skip=true -T 4C  -Dspotless.check.skip=true -Pskip-webui-build

完整Dockerfile

注意版本!!!

FROM openjdk:8-jre

# Install dependencies
RUN set -ex; \
  apt-get update; \
  # 改动
  apt-get -y install libsnappy1v5 gettext-base libjemalloc-dev openssh-server vim; \
  rm -rf /var/lib/apt/lists/*

# Grab gosu for easy step-down from root
ENV GOSU_VERSION 1.11
RUN set -ex; \
  wget -nv -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)"; \
  wget -nv -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc"; \
  export GNUPGHOME="$(mktemp -d)"; \
  for server in ha.pool.sks-keyservers.net $(shuf -e \
                          hkp://p80.pool.sks-keyservers.net:80 \
                          keyserver.ubuntu.com \
                          hkp://keyserver.ubuntu.com:80 \
                          pgp.mit.edu) ; do \
      gpg --batch --keyserver "$server" --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && break || : ; \
  done && \
  gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
  gpgconf --kill all; \
  rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
  chmod +x /usr/local/bin/gosu; \
  gosu nobody true

# Configure Flink version
  # 改动
ENV FLINK_ASC_URL=https://www.apache.org/dist/flink/flink-1.13.0/flink-1.13.0-bin-scala_2.11.tgz.asc \
    GPG_KEY=31D2DD10BFC15A2D \
    CHECK_GPG=FALSE

# Prepare environment
ENV FLINK_HOME=/opt/flink
ENV PATH=$FLINK_HOME/bin:$PATH
RUN groupadd --system --gid=9999 flink && \
    useradd --system --home-dir $FLINK_HOME --uid=9999 --gid=flink flink
WORKDIR $FLINK_HOME

# Install Flink
# copy flink.tgz to dirname path
  # 改动
COPY flink-1.13.0-bin-scala_2.11.tgz flink.tgz
RUN set -ex; \
#  wget -nv -O flink.tgz "$FLINK_TGZ_URL"; \
  \
  if [ "$CHECK_GPG" = "true" ]; then \
    wget -nv -O flink.tgz.asc "$FLINK_ASC_URL"; \
    export GNUPGHOME="$(mktemp -d)"; \
    for server in ha.pool.sks-keyservers.net $(shuf -e \
                            hkp://p80.pool.sks-keyservers.net:80 \
                            keyserver.ubuntu.com \
                            hkp://keyserver.ubuntu.com:80 \
                            pgp.mit.edu) ; do \
        gpg --batch --keyserver "$server" --recv-keys "$GPG_KEY" && break || : ; \
    done && \
    gpg --batch --verify flink.tgz.asc flink.tgz; \
    gpgconf --kill all; \
    rm -rf "$GNUPGHOME" flink.tgz.asc; \
  fi; \
  \
  tar -xf flink.tgz --strip-components=1; \
  rm flink.tgz; \
  \
  # set fileformat=unix
    # 改动
  find ./bin -regex ".*sh\\|.*flink" |  xargs sed -i 's/\r$//g'; \
  chmod a+wx ./bin/*; \
  chown -R flink:flink .;

# Configure container
COPY docker-entrypoint.sh /
# set fileformat=unix
  # 改动
RUN set -ex; \
    sed -i 's/\r$//g' /docker-entrypoint.sh;
ENTRYPOINT ["/docker-entrypoint.sh"]
EXPOSE 6123 8081
CMD ["help"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值