1
+ FROM buildpack-deps:buster-scm
2
+
3
+ # gcc for cgo
4
+ RUN apt-get update && apt-get install -y --no-install-recommends \
5
+ g++ \
6
+ gcc \
7
+ libc6-dev \
8
+ make \
9
+ pkg-config \
10
+ xz-utils \
11
+ && rm -rf /var/lib/apt/lists/*
12
+
13
+ # INSTALL GO
14
+
15
+ ENV GOLANG_VERSION 1.14.4
16
+
17
+ RUN set -eux; \
18
+ \
19
+ # this "case" statement is generated via "update.sh"
20
+ dpkgArch="$(dpkg --print-architecture)" ; \
21
+ case "${dpkgArch##*-}" in \
22
+ amd64) goRelArch='linux-amd64' ; goRelSha256='aed845e4185a0b2a3c3d5e1d0a35491702c55889192bb9c30e67a3de6849c067' ;; \
23
+ armhf) goRelArch='linux-armv6l' ; goRelSha256='e20211425b3f797ca6cd5e9a99ab6d5eaf1b009d08d19fc8a7835544fa58c703' ;; \
24
+ arm64) goRelArch='linux-arm64' ; goRelSha256='05dc46ada4e23a1f58e72349f7c366aae2e9c7a7f1e7653095538bc5bba5e077' ;; \
25
+ i386) goRelArch='linux-386' ; goRelSha256='4179f406ea0efd455a8071eaaaf1dea92cac5c17aab89fbad18ea2a37623c810' ;; \
26
+ ppc64el) goRelArch='linux-ppc64le' ; goRelSha256='b335f85bc935ca3f553ad1bac37da311aaec887ffd8a48cb58a0abb0d8adf324' ;; \
27
+ s390x) goRelArch='linux-s390x' ; goRelSha256='17f2ae0bae968b3d909daabc5cc4a37471ddb70ec49076b78702291e6772d71a' ;; \
28
+ *) goRelArch='src' ; goRelSha256='7011af3bbc2ac108d1b82ea8abb87b2e63f78844f0259be20cde4d42c5c40584' ; \
29
+ echo >&2; echo >&2 "warning: current architecture ($dpkgArch) does not have a corresponding Go binary release; will be building from source" ; echo >&2 ;; \
30
+ esac; \
31
+ \
32
+ url="https://golang.org/dl/go${GOLANG_VERSION}.${goRelArch}.tar.gz" ; \
33
+ wget -O go.tgz "$url" ; \
34
+ echo "${goRelSha256} *go.tgz" | sha256sum -c -; \
35
+ tar -C /usr/local -xzf go.tgz; \
36
+ rm go.tgz; \
37
+ \
38
+ if [ "$goRelArch" = 'src' ]; then \
39
+ echo >&2; \
40
+ echo >&2 'error: UNIMPLEMENTED' ; \
41
+ echo >&2 'TODO install golang-any from jessie-backports for GOROOT_BOOTSTRAP (and uninstall after build)' ; \
42
+ echo >&2; \
43
+ exit 1; \
44
+ fi; \
45
+ \
46
+ export PATH="/usr/local/go/bin:$PATH" ; \
47
+ go version
48
+
49
+ ENV GOPATH /go
50
+ ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
51
+
52
+ RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
53
+
54
+ # INSTALL NODE
55
+
56
+ ENV NODE_VERSION 12.17.0
57
+
58
+ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \
59
+ && case "${dpkgArch##*-}" in \
60
+ amd64) ARCH='x64' ;; \
61
+ ppc64el) ARCH='ppc64le' ;; \
62
+ s390x) ARCH='s390x' ;; \
63
+ arm64) ARCH='arm64' ;; \
64
+ armhf) ARCH='armv7l' ;; \
65
+ i386) ARCH='x86' ;; \
66
+ *) echo "unsupported architecture" ; exit 1 ;; \
67
+ esac \
68
+ # gpg keys listed at https://github.com/nodejs/node#release-keys
69
+ && set -ex \
70
+ && for key in \
71
+ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
72
+ FD3A5288F042B6850C66B31F09FE44734EB7990E \
73
+ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
74
+ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
75
+ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
76
+ B9AE9905FFD7803F25714661B63B535A4C206CA9 \
77
+ 77984A986EBC2AA786BC0F66B01FBB92821C587A \
78
+ 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
79
+ 4ED778F539E3634C779C87C6D7062848A1AB005C \
80
+ A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
81
+ B9E2F5981AA6E0CD28160D9FF13993A75599653C \
82
+ ; do \
83
+ gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
84
+ gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
85
+ gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
86
+ done \
87
+ && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
88
+ && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
89
+ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
90
+ && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$ " SHASUMS256.txt | sha256sum -c - \
91
+ && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
92
+ && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
93
+ && ln -s /usr/local/bin/node /usr/local/bin/nodejs \
94
+ # smoke tests
95
+ && node --version \
96
+ && npm --version
97
+
98
+ ENV YARN_VERSION 1.22.4
99
+
100
+ RUN set -ex \
101
+ && for key in \
102
+ 6A010C5166006599AA17F08146C2130DFD2497F5 \
103
+ ; do \
104
+ gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
105
+ gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
106
+ gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
107
+ done \
108
+ && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
109
+ && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
110
+ && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
111
+ && mkdir -p /opt \
112
+ && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
113
+ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
114
+ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
115
+ && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
116
+ # smoke test
117
+ && yarn --version
118
+
119
+
120
+
121
+ RUN mkdir /src
122
+ WORKDIR /src
0 commit comments