Skip to content

Commit 7e3b838

Browse files
committed
Use native Go in Docker build
1 parent fe145de commit 7e3b838

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

.dockerignore

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ tmp/
55
imgproxy
66

77
docs/
8-
docker/
98
examples/
109
LICENSE
1110
README.md

docker/Dockerfile

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ ARG BASE_IMAGE_VERSION="v3.2.1"
22

33
FROM darthsim/imgproxy-base:${BASE_IMAGE_VERSION}
44

5+
ARG BUILDPLATFORM
6+
ARG TARGETPLATFORM
7+
58
COPY . .
6-
RUN ["bash", "-c", "go build -v -o /usr/local/bin/imgproxy"]
9+
RUN docker/go.sh build -v -o /usr/local/bin/imgproxy
710

811
# ==================================================================================================
912
# Final image

docker/go.sh

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
# This is pretty dirty hack. Building imgproxy under Qemu is pretty slow.
6+
# So we install Go binary native for the BUILDPLATFORM.
7+
if [[ $BUILDPLATFORM != $TARGETPLATFORM ]]; then
8+
case "$BUILDPLATFORM" in
9+
amd64 | "linux/amd64")
10+
BUILD_ARCH="amd64"
11+
;;
12+
13+
arm64 | "arm64/v8" | "linux/arm64" | "linux/arm64/v8")
14+
BUILDPLATFORM="arm64"
15+
;;
16+
17+
*)
18+
echo "Unknown platform: $BUILDPLATFORM"
19+
exit 1
20+
esac
21+
22+
case "$TARGETPLATFORM" in
23+
amd64 | "linux/amd64")
24+
TARGET_ARCH="amd64"
25+
;;
26+
27+
arm64 | "arm64/v8" | "linux/arm64" | "linux/arm64/v8")
28+
TARGET_ARCH="arm64"
29+
;;
30+
31+
*)
32+
echo "Unknown platform: $TARGETPLATFORM"
33+
exit 1
34+
esac
35+
36+
GOLANG_VERSION=$(go version | sed -E 's/.*go([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
37+
38+
rm -rf /usr/local/go
39+
40+
dpkg --add-architecture ${BUILD_ARCH}
41+
apt-get update
42+
apt-get install -y --no-install-recommends libstdc++6:${BUILD_ARCH}
43+
44+
curl -Ls https://golang.org/dl/go${GOLANG_VERSION}.linux-${BUILD_ARCH}.tar.gz \
45+
| tar -xzC /usr/local
46+
47+
export CGO_ENABLED=1
48+
export GOOS=linux
49+
export GOARCH=$TARGET_ARCH
50+
fi
51+
52+
go $@

0 commit comments

Comments
 (0)