Dockerfile 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Dockerfile to build an image with the local version of psiphon-tunnel-core.
  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 mkdir -p /usr/share/man/man1 # fixes https://stackoverflow.com/a/69844974
  8. RUN apt-get update -y && apt-get install -y --no-install-recommends \
  9. build-essential \
  10. ca-certificates \
  11. curl \
  12. git \
  13. openjdk-8-jdk \
  14. pkg-config \
  15. zip \
  16. unzip \
  17. && apt-get clean \
  18. && rm -rf /var/lib/apt/lists/*
  19. # Install Go.
  20. ENV GOVERSION=go1.19.6 GOROOT=/usr/local/go GOPATH=/go PATH=$PATH:/usr/local/go/bin:/go/bin CGO_ENABLED=1
  21. RUN curl -L https://storage.googleapis.com/golang/$GOVERSION.linux-amd64.tar.gz -o /tmp/go.tar.gz \
  22. && tar -C /usr/local -xzf /tmp/go.tar.gz \
  23. && rm /tmp/go.tar.gz \
  24. && echo $GOVERSION > $GOROOT/VERSION
  25. # Setup Android environment and install build tools.
  26. ENV ANDROID_PLATFORM_VERSION=30 ANDROID_NDK_VERSION=23.1.7779620
  27. ENV ANDROID_SDK_ROOT=/android-sdk-root-linux
  28. ENV ANDROID_HOME=$ANDROID_SDK_ROOT
  29. ENV ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/$ANDROID_NDK_VERSION
  30. RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip -o /tmp/commandlinetools-linux.zip \
  31. && mkdir -p $ANDROID_SDK_ROOT \
  32. && cd $ANDROID_SDK_ROOT \
  33. && mkdir cmdline-tools \
  34. && cd cmdline-tools \
  35. && unzip /tmp/commandlinetools-linux.zip \
  36. && mv cmdline-tools latest \
  37. && yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --licenses \
  38. && $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "platforms;android-${ANDROID_PLATFORM_VERSION}" "ndk;${ANDROID_NDK_VERSION}"
  39. # Install Gomobile from source at MobileLibrary/go-mobile
  40. # The sed operation patches gomobile, editing a command that assumes modules
  41. RUN mkdir -p $GOPATH/src/golang.org/x
  42. COPY go-mobile $GOPATH/src/golang.org/x/mobile
  43. RUN cd $GOPATH/src/golang.org/x/mobile \
  44. && mv ./cmd/gomobile/init.go ./cmd/gomobile/init.go.orig \
  45. && sed -e 's/golang.org\/x\/mobile\/cmd\/gobind@latest/golang.org\/x\/mobile\/cmd\/gobind/g' ./cmd/gomobile/init.go.orig > ./cmd/gomobile/init.go \
  46. && export GO111MODULE=off \
  47. && go install golang.org/x/mobile/cmd/gomobile \
  48. && gomobile init -v
  49. WORKDIR $GOPATH/src