1
- FROM public.ecr.aws/lambda/nodejs:20
1
+ FROM public.ecr.aws/amazonlinux/amazonlinux:2023
2
2
3
- RUN dnf repolist --enabled
4
- RUN dnf install -y automake findutils g++ gcc git gzip make maven python3.11 python3.11-pip tar unzip which wget
5
- RUN git config --global user.email
"[email protected] " && git config --global user.name
"PDK Build Job"
6
- RUN ln -sf /usr/bin/python3.11 /usr/bin/python
7
- ENV LD_LIBRARY_PATH=""
3
+ # Install SSH and other utilities
4
+ RUN set -ex \
5
+ && dnf install -y openssh-clients \
6
+ && mkdir ~/.ssh \
7
+ && touch ~/.ssh/known_hosts \
8
+ && ssh-keyscan -t rsa,dsa -H github.com >> ~/.ssh/known_hosts \
9
+ && ssh-keyscan -t rsa,dsa -H bitbucket.org >> ~/.ssh/known_hosts \
10
+ && chmod 600 ~/.ssh/known_hosts \
11
+ && dnf install docker -y \
12
+ && dnf install -y gzip jq openssl openssl-devel tar wget which sudo unzip make gettext gcc curl-devel expat-devel iptables \
13
+ && dnf install -y bzip2-devel libffi-devel ncurses-devel readline-devel sqlite-devel xz-devel zlib-devel libicu
8
14
9
- # NPM Dependencies
15
+ # Install Git
16
+ RUN set -ex \
17
+ && GIT_VERSION=2.43.0 \
18
+ && GIT_TAR_FILE=git-$GIT_VERSION.tar.gz \
19
+ && GIT_SRC=https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz \
20
+ && curl -L -o $GIT_TAR_FILE $GIT_SRC \
21
+ && tar zxvf $GIT_TAR_FILE \
22
+ && cd git-$GIT_VERSION \
23
+ && make -j4 prefix=/usr \
24
+ && make install prefix=/usr \
25
+ && cd .. ; rm -rf git-$GIT_VERSION \
26
+ && rm -rf $GIT_TAR_FILE /tmp/*
27
+
28
+ # Install AWS CLI v2
29
+ # https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html
30
+ RUN curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o /tmp/awscliv2.zip \
31
+ && unzip -q /tmp/awscliv2.zip -d /opt \
32
+ && /opt/aws/install --update -i /usr/local/aws-cli -b /usr/local/bin \
33
+ && rm /tmp/awscliv2.zip \
34
+ && rm -rf /opt/aws \
35
+ && aws --version
36
+
37
+ # Install AWS Copilot CLI
38
+ # https://aws.github.io/copilot-cli/docs/getting-started/install/
39
+ RUN curl -Lo copilot https://github.com/aws/copilot-cli/releases/download/v1.32.1/copilot-linux && chmod +x copilot && sudo mv copilot /usr/local/bin/copilot \
40
+ && dnf install -y dirmngr --allowerasing \
41
+ && gpg --keyserver hkps://keyserver.ubuntu.com --recv BCE9D9A42D51784F \
42
+ && sudo curl -Lo copilot.asc https://github.com/aws/copilot-cli/releases/download/v1.32.1/copilot-linux.asc \
43
+ && gpg --verify copilot.asc /usr/local/bin/copilot \
44
+ && rm -rf copilot.asc
45
+
46
+ # Install nodejs
47
+ ENV NODE_VERSION="v18.19.0"
48
+
49
+ RUN wget https://nodejs.org/download/release/$NODE_VERSION/node-$NODE_VERSION-linux-x64.tar.gz -O /tmp/nodejs.tar.gz \
50
+ && tar -xvf /tmp/nodejs.tar.gz --directory /usr/local --strip-components 1 \
51
+ && npm config --global set prefix /usr/local/npm \
52
+ && rm -fr /tmp/node*
53
+
54
+ ENV PATH="/usr/local/npm/bin:$PATH"
55
+
56
+ # Pre-Build Step - Test Reporting Package
57
+ RUN npm install -g @aws/universal-test-runner
58
+
59
+ # Install Java
60
+ ENV JAVA_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
61
+ JDK_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
62
+ JRE_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64" \
63
+ MAVEN_HOME="/opt/maven" \
64
+ MAVEN_VERSION=3.9.6 \
65
+ INSTALLED_GRADLE_VERSIONS="8.5" \
66
+ GRADLE_VERSION=8.5 \
67
+ GRADLE_PATH="$SRC_DIR/gradle" \
68
+ MAVEN_DOWNLOAD_SHA512="706f01b20dec0305a822ab614d51f32b07ee11d0218175e55450242e49d2156386483b506b3a4e8a03ac8611bae96395fd5eec15f50d3013d5deed6d1ee18224" \
69
+ GRADLE_DOWNLOADS_SHA256="c16d517b50dd28b3f5838f0e844b7520b8f1eb610f2f29de7e4e04a1b7c9c79b 8.5"
70
+
71
+ ARG MAVEN_CONFIG_HOME="/root/.m2"
72
+ ENV JAVA_HOME="$JAVA_17_HOME" \
73
+ JDK_HOME="$JDK_17_HOME" \
74
+ JRE_HOME="$JRE_17_HOME"
75
+
76
+ # Install Amazon Corretto 17
77
+ RUN set -x \
78
+ && yum install -y java-17-amazon-corretto \
79
+ && yum install -y java-17-amazon-corretto-devel \
80
+ && rm $JAVA_HOME/lib/security/cacerts && ln -s /etc/pki/java/cacerts $JAVA_HOME/lib/security/cacerts
81
+
82
+ # Install Maven
83
+ RUN set -ex \
84
+ && mkdir -p $MAVEN_HOME \
85
+ && curl -LSso /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz https://downloads.apache.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz \
86
+ && echo "$MAVEN_DOWNLOAD_SHA512 /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz" | sha512sum -c - \
87
+ && tar xzvf /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz -C $MAVEN_HOME --strip-components=1 \
88
+ && rm /var/tmp/apache-maven-$MAVEN_VERSION-bin.tar.gz \
89
+ && update-alternatives --install /usr/bin/mvn mvn /opt/maven/bin/mvn 10000 \
90
+ && mkdir -p $MAVEN_CONFIG_HOME \
91
+ # Install Gradle
92
+ && mkdir -p $GRADLE_PATH \
93
+ && for version in $INSTALLED_GRADLE_VERSIONS; do { \
94
+ wget -nv "https://services.gradle.org/distributions/gradle-$version-all.zip" -O "$GRADLE_PATH/gradle-$version-all.zip" \
95
+ && unzip "$GRADLE_PATH/gradle-$version-all.zip" -d /usr/local \
96
+ && echo -e "$GRADLE_DOWNLOADS_SHA256" | grep "$version" | sed "s|$version|$GRADLE_PATH/gradle-$version-all.zip|" | sha256sum -c - \
97
+ && rm "$GRADLE_PATH/gradle-$version-all.zip" \
98
+ && if [ "$version" != "$GRADLE_VERSION" ]; then rm -rf "/usr/local/gradle-$version" ; fi; \
99
+ }; done \
100
+ # Install default GRADLE_VERSION to path
101
+ && ln -s /usr/local/gradle-$GRADLE_VERSION/bin/gradle /usr/bin/gradle \
102
+ && rm -rf $GRADLE_PATH
103
+
104
+ # Install Python
105
+ RUN curl https://pyenv.run | bash
106
+ ENV PATH="/root/.pyenv/shims:/root/.pyenv/bin:$PATH"
107
+
108
+ ENV PYTHON_VERSION="3.11.6"
109
+ ENV PYTHON_PIP_VERSION=22.3.1
110
+ ENV PYYAML_VERSION=6.0
111
+ ENV PYTHON_SETUP_TOOLS_VERSION=67.6.0
112
+
113
+ RUN sudo ls -alrt /root
114
+ RUN cat /root/.pyenv/plugins/python-build/share/python-build/$PYTHON_VERSION
115
+ RUN env PYTHON_CONFIGURE_OPTS="--enable-shared --enable-loadable-sqlite-extensions" pyenv install $PYTHON_VERSION && rm -rf /tmp/*
116
+ RUN pyenv global $PYTHON_VERSION
117
+ RUN set -ex \
118
+ && pip3 install --no-cache-dir --upgrade --force-reinstall "pip==$PYTHON_PIP_VERSION" \
119
+ && pip3 install --no-cache-dir --upgrade "PyYAML==$PYYAML_VERSION" \
120
+ && pip3 install --no-cache-dir --upgrade "setuptools==$PYTHON_SETUP_TOOLS_VERSION" wheel aws-sam-cli boto3 pipenv virtualenv
121
+
122
+ # Install Dotnet
123
+ ENV PATH="/root/.dotnet/:/root/.dotnet/tools/:$PATH"
124
+ RUN set -ex \
125
+ && wget -qO /usr/local/bin/dotnet-install.sh https://dot.net/v1/dotnet-install.sh \
126
+ && chmod +x /usr/local/bin/dotnet-install.sh
127
+
128
+ ENV DOTNET_SDK_VERSION="8.0.100"
129
+ ENV DOTNET_ROOT="/root/.dotnet"
130
+
131
+ # Add .NET Core 6.0 Global Tools install folder to PATH
132
+ RUN /usr/local/bin/dotnet-install.sh -v $DOTNET_SDK_VERSION \
133
+ && dotnet --list-sdks \
134
+ && rm -rf /tmp/*
135
+
136
+ # Install GoLang
137
+ RUN git clone https://github.com/syndbg/goenv.git $HOME/.goenv
138
+ ENV PATH="/root/.goenv/shims:/root/.goenv/bin:/go/bin:$PATH"
139
+ ENV GOENV_DISABLE_GOPATH=1
140
+ ENV GOPATH="/go"
141
+ ENV GOLANG_VERSION="1.21.5"
142
+
143
+ RUN goenv install $GOLANG_VERSION && rm -rf /tmp/* && \
144
+ goenv global $GOLANG_VERSION && \
145
+ go env -w GO111MODULE=auto
146
+
147
+ RUN go get -u github.com/golang/dep/cmd/dep
148
+
149
+ # Cleanup
150
+ RUN rm -fr /tmp/* /var/tmp/*
151
+
152
+ # Install Docker
153
+ ENV DOCKER_BUCKET="download.docker.com" \
154
+ DOCKER_CHANNEL="stable" \
155
+ DIND_COMMIT="3b5fac462d21ca164b3778647420016315289034"
156
+
157
+ ENV DOCKER_SHA256="692ecfc28333485d184f628b74c25b2894cee9495a51a5418ba60ef95bf733ca"
158
+ ENV DOCKER_VERSION="24.0.9"
159
+ ENV DOCKER_COMPOSE_VERSION="v2.23.3"
160
+
161
+ VOLUME /var/lib/docker
162
+
163
+ RUN set -ex \
164
+ && curl -fSL "https://${DOCKER_BUCKET}/linux/static/${DOCKER_CHANNEL}/x86_64/docker-${DOCKER_VERSION}.tgz" -o docker.tgz \
165
+ && echo "${DOCKER_SHA256} *docker.tgz" | sha256sum -c - \
166
+ && tar --extract --file docker.tgz --strip-components 1 --directory /usr/local/bin/ \
167
+ && rm docker.tgz \
168
+ && docker -v \
169
+ # set up subuid/subgid so that "--userns-remap=default" works out-of-the-box
170
+ && groupadd dockremap \
171
+ && useradd -g dockremap dockremap \
172
+ && echo 'dockremap:165536:65536' >> /etc/subuid \
173
+ && echo 'dockremap:165536:65536' >> /etc/subgid \
174
+ && wget -q "https://raw.githubusercontent.com/docker/docker/${DIND_COMMIT}/hack/dind" -O /usr/local/bin/dind \
175
+ && curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose \
176
+ && chmod +x /usr/local/bin/dind /usr/local/bin/docker-compose \
177
+ # Ensure docker-compose works
178
+ && docker-compose version
179
+
180
+ # ===== PDK dependencies =====
181
+
182
+ # Package managers
10
183
RUN npm install -g @aws/pdk aws-cdk bun pnpm projen yarn
11
184
12
185
# Poetry setup
13
186
RUN curl -sSL https://install.python-poetry.org | python
14
187
ENV PATH="/root/.local/bin:$PATH"
15
188
16
- # JDK
17
- RUN dnf -y install java-17-amazon-corretto-devel
18
-
19
189
# Graphviz
20
190
RUN dnf -y install graphviz
21
191
@@ -29,4 +199,10 @@ RUN curl https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6
29
199
RUN curl https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.1.0/openapi-generator-cli-7.1.0.jar -o ~/.open-api-generator-cli/7.1.0.jar
30
200
RUN curl https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.6.0/openapi-generator-cli-6.6.0.jar -o ~/.open-api-generator-cli/6.6.0.jar
31
201
32
- CMD ["/bin/bash" ]
202
+ # =====================================
203
+
204
+ # Entrypoint script
205
+ ADD ./dockerd-entrypoint.sh /
206
+
207
+ ENTRYPOINT ["/dockerd-entrypoint.sh" ]
208
+ CMD ["sleep" , "infinity" ]
0 commit comments