Skip to content

Commit fbe8f03

Browse files
committedFeb 2, 2025
Updated Dockerfile and Makefile for multiplatform compilation
1 parent 7a2c406 commit fbe8f03

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed
 

‎Dockerfile

+18-13
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,28 @@ RUN echo '#!/bin/bash' > /entrypoint.sh \
1616
&& echo 'cd /workspace/src/' >> /entrypoint.sh \
1717
&& echo '/usr/local/go/bin/go clean' >> /entrypoint.sh \
1818
&& echo 'echo "[+] Building"' >> /entrypoint.sh \
19-
# && echo 'echo " ├──[>] Building for linux i386"' >> /entrypoint.sh \
20-
# && echo 'mkdir -p /workspace/bin/linux/x86/' >> /entrypoint.sh >> /entrypoint.sh \
21-
# && echo 'GOOS=linux GOARCH=386 /usr/local/go/bin/go build -o /workspace/bin/linux/x86/ -buildvcs=false' >> /entrypoint.sh \
22-
&& echo 'echo " ├──[>] Building for linux amd64"' >> /entrypoint.sh \
23-
&& echo 'mkdir -p /workspace/bin/linux/x64/' >> /entrypoint.sh >> /entrypoint.sh \
24-
&& echo 'GOOS=linux GOARCH=amd64 /usr/local/go/bin/go build -o /workspace/bin/linux/x64/ -buildvcs=false' >> /entrypoint.sh \
25-
# && echo 'echo " ├──[>] Building for Windows i386"' >> /entrypoint.sh \
26-
# && echo 'mkdir -p /workspace/bin/windows/x86/' >> /entrypoint.sh >> /entrypoint.sh \
27-
# && echo 'GOOS=windows GOARCH=386 /usr/local/go/bin/go build -o /workspace/bin/windows/x86/ -buildvcs=false' >> /entrypoint.sh \
28-
# && echo 'echo " └──[>] Building for Windows amd64"' >> /entrypoint.sh \
29-
# && echo 'mkdir -p /workspace/bin/windows/x64/' >> /entrypoint.sh >> /entrypoint.sh \
30-
# && echo 'GOOS=windows GOARCH=amd64 /usr/local/go/bin/go build -o /workspace/bin/windows/x64/ -buildvcs=false' >> /entrypoint.sh \
19+
&& echo 'if [ $# -ge 2 ]; then' >> /entrypoint.sh \
20+
&& echo ' OS=$1' >> /entrypoint.sh \
21+
&& echo ' GOARCH=$2' >> /entrypoint.sh \
22+
&& echo 'else' >> /entrypoint.sh \
23+
&& echo ' OS=$(uname -s | tr "[:upper:]" "[:lower:]")' >> /entrypoint.sh \
24+
&& echo ' ARCH=$(uname -m)' >> /entrypoint.sh \
25+
&& echo ' case $ARCH in' >> /entrypoint.sh \
26+
&& echo ' x86_64) GOARCH="amd64" ;;' >> /entrypoint.sh \
27+
&& echo ' i386|i686) GOARCH="386" ;;' >> /entrypoint.sh \
28+
&& echo ' aarch64) GOARCH="arm64" ;;' >> /entrypoint.sh \
29+
&& echo ' armv7*) GOARCH="arm" ;;' >> /entrypoint.sh \
30+
&& echo ' *) echo "Unsupported architecture $ARCH"; exit 1 ;;' >> /entrypoint.sh \
31+
&& echo ' esac' >> /entrypoint.sh \
32+
&& echo 'fi' >> /entrypoint.sh \
33+
&& echo 'echo " ├──[>] Building for $OS $GOARCH"' >> /entrypoint.sh \
34+
&& echo 'mkdir -p "/workspace/bin/$OS/$GOARCH/"' >> /entrypoint.sh \
35+
&& echo 'GOOS=$OS GOARCH=$GOARCH /usr/local/go/bin/go build -o "/workspace/bin/$OS/$GOARCH/" -buildvcs=false' >> /entrypoint.sh \
3136
&& chmod +x /entrypoint.sh
3237

3338
# Prepare workspace volume
3439
RUN mkdir -p /workspace/
3540
VOLUME /workspace/
3641
WORKDIR /workspace/
3742

38-
CMD ["/bin/bash", "/entrypoint.sh"]
43+
ENTRYPOINT ["/entrypoint.sh"]

‎Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ build_docker:
88
docker build -t $(IMGNAME):latest -f Dockerfile .
99

1010
compile: build_docker
11-
docker run --rm -v "$(shell pwd):/workspace" -it $(IMGNAME)
11+
docker run --rm -v "$(shell pwd):/workspace" -it $(IMGNAME) $(shell uname -s | tr "[:upper:]" "[:lower:]") $(shell uname -m)

0 commit comments

Comments
 (0)
Please sign in to comment.