Dockerfile 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # Dockerfile to build the Psiphon Client Library for multiple platforms.
  2. #
  3. # See README.md for usage instructions.
  4. FROM --platform=linux/amd64 ubuntu:18.04
  5. # Install system-level dependencies.
  6. ENV DEBIAN_FRONTEND=noninteractive
  7. RUN apt-get update -y && apt-get install -y --no-install-recommends \
  8. build-essential \
  9. ca-certificates \
  10. curl \
  11. gcc-mingw-w64-i686 \
  12. gcc-mingw-w64-x86-64 \
  13. gcc-multilib \
  14. git \
  15. python \
  16. unzip \
  17. && apt-get clean \
  18. && rm -rf /var/lib/apt/lists/*
  19. # Install Go.
  20. # NOTE: Go 1.10+ is required to build c-shared for windows (https://github.com/golang/go/commit/bb0bfd002ada7e3eb9198d4287b32c2fed6e8da6)
  21. ENV GOVERSION=go1.24.12 GOROOT=/usr/local/go GOPATH=/go PATH=$PATH:/usr/local/go/bin:/go/bin CGO_ENABLED=1
  22. RUN curl -L https://go.dev/dl/$GOVERSION.linux-amd64.tar.gz -o /tmp/go.tar.gz \
  23. && tar -C /usr/local -xzf /tmp/go.tar.gz \
  24. && rm /tmp/go.tar.gz \
  25. && echo $GOVERSION > $GOROOT/VERSION
  26. # Setup Android Environment.
  27. ENV ANDROID_NDK_VERSION=r22b
  28. ENV ANDROID_NDK_TOOLCHAIN_ROOT=/android-ndk-toolchain
  29. # Setup Android NDK
  30. RUN cd /tmp \
  31. && curl https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip -o /tmp/android-ndk.zip \
  32. && unzip /tmp/android-ndk.zip -d / \
  33. && mkdir -p /android-ndk-toolchain \
  34. && /android-ndk-${ANDROID_NDK_VERSION}/build/tools/make_standalone_toolchain.py --arch arm --install-dir /android-ndk-toolchain/arm \
  35. && /android-ndk-${ANDROID_NDK_VERSION}/build/tools/make_standalone_toolchain.py --arch arm64 --install-dir /android-ndk-toolchain/arm64
  36. WORKDIR $GOPATH/src/github.com/Psiphon-Labs/psiphon-tunnel-core/ClientLibrary