Browse Source

Dockerfile: add cross compilation helper

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
CrazyMax 2 năm trước cách đây
mục cha
commit
6cba7d22e9
1 tập tin đã thay đổi với 14 bổ sung5 xóa
  1. 14 5
      Dockerfile

+ 14 - 5
Dockerfile

@@ -1,19 +1,28 @@
 # syntax=docker/dockerfile:1
 # syntax=docker/dockerfile:1
 
 
+ARG GO_VERSION=1.19.4
+ARG BASE_DEBIAN_DISTRO="bullseye"
+ARG GOLANG_IMAGE="golang:${GO_VERSION}-${BASE_DEBIAN_DISTRO}"
+ARG XX_VERSION=1.1.2
+
+ARG VPNKIT_VERSION=0.5.0
+
 ARG CROSS="false"
 ARG CROSS="false"
 ARG SYSTEMD="false"
 ARG SYSTEMD="false"
-ARG GO_VERSION=1.19.4
 ARG DEBIAN_FRONTEND=noninteractive
 ARG DEBIAN_FRONTEND=noninteractive
-ARG VPNKIT_VERSION=0.5.0
 
 
-ARG BASE_DEBIAN_DISTRO="bullseye"
-ARG GOLANG_IMAGE="golang:${GO_VERSION}-${BASE_DEBIAN_DISTRO}"
+# cross compilation helper
+FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
 
 
-FROM ${GOLANG_IMAGE} AS base
+# base
+FROM --platform=$BUILDPLATFORM ${GOLANG_IMAGE} AS base
+COPY --from=xx / /
 RUN echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
 RUN echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
 ARG APT_MIRROR
 ARG APT_MIRROR
 RUN sed -ri "s/(httpredir|deb).debian.org/${APT_MIRROR:-deb.debian.org}/g" /etc/apt/sources.list \
 RUN sed -ri "s/(httpredir|deb).debian.org/${APT_MIRROR:-deb.debian.org}/g" /etc/apt/sources.list \
  && sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list
  && sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list
+ARG DEBIAN_FRONTEND
+RUN apt-get update && apt-get install --no-install-recommends -y file
 ENV GO111MODULE=off
 ENV GO111MODULE=off
 
 
 FROM base AS criu
 FROM base AS criu