Skip to content

Commit d88c90d

Browse files
committed
Add Java 17 images
Contributes to Azure/azure-functions-java-worker#548
1 parent ff0181e commit d88c90d

15 files changed

+461
-11
lines changed

Diff for: README.md

+13-8
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,22 @@ Linux amd64 Tags
7171

7272
Linux amd64 Tags
7373

74-
| Tags | OS Version |
75-
|------------------------------------------|------------|
74+
| Tags | OS Version |
75+
|--------------------------------------|------------|
7676
| `4`, `4-java8` | Debian 10 |
7777
| `4-slim`, `4-java8-slim` | Debian 10 |
7878
| `4-appservice`, `4-java8-appservice` | Debian 10 |
79-
| `4-java8-build` | Debian 10 |
80-
| `4-java11` |Debian 10 |
81-
| `4-java11-slim` | Debian 10 |
82-
| `4-java11-appservice` | Debian 10 |
83-
| `4-java11-core-tools` | Debian 10 |
84-
| `4-java11-build` | Debian 10 |
79+
| `4-java8-build` | Debian 10 |
80+
| `4-java11` |Debian 10 |
81+
| `4-java11-slim` | Debian 10 |
82+
| `4-java11-appservice` | Debian 10 |
83+
| `4-java11-core-tools` | Debian 10 |
84+
| `4-java11-build` | Debian 10 |
85+
| `4-java17` |Debian 10 |
86+
| `4-java17-slim` | Debian 10 |
87+
| `4-java17-appservice` | Debian 10 |
88+
| `4-java17-core-tools` | Debian 10 |
89+
| `4-java17-build` | Debian 10 |
8590

8691
### Python
8792

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
FROM debian:bullseye
2+
3+
ARG MAVEN_VERSION=3.8.5
4+
ARG USER_HOME_DIR="/root"
5+
ARG SHA=89ab8ece99292476447ef6a6800d9842bbb60787b9b8a45c103aa61d2f205a971d8c3ddfb8b03e514455b4173602bd015e82958c0b3ddc1728a57126f773c743
6+
ARG BASE_MAVEN_URL=https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries
7+
ARG JAVA_VERSION=17.0.2.8.1
8+
ARG BASE_JDK_URL=https://aka.ms/download-jdk
9+
ARG JAVA_HOME=/usr/lib/jvm/msft-17-x64
10+
11+
RUN apt-get -qq update \
12+
&& apt-get -qqy install curl \
13+
&& rm -rf /var/lib/apt/lists/*
14+
15+
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
16+
&& curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_MAVEN_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
17+
&& echo "${SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
18+
&& tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
19+
&& rm -f /tmp/apache-maven.tar.gz \
20+
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
21+
22+
RUN mkdir -p ${JAVA_HOME} \
23+
&& curl -fsSL -o /tmp/jdk.tar.gz ${BASE_JDK_URL}/microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz \
24+
&& tar -xzf /tmp/jdk.tar.gz -C ${JAVA_HOME} --strip-components=1 \
25+
&& rm -f /tmp/jdk.tar.gz
26+
27+
ENV MAVEN_HOME /usr/share/maven
28+
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"
29+
ENV JAVA_HOME=${JAVA_HOME}
30+
31+
COPY mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh
32+
COPY settings-docker.xml /usr/share/maven/ref/
33+
34+
RUN chmod +x /usr/local/bin/mvn-entrypoint.sh
35+
36+
ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]
37+
CMD ["mvn"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
ARG JAVA_VERSION=17.0.2.8.1
2+
ARG JAVA_HOME=/usr/lib/jvm/msft-17-x64
3+
FROM mcr.microsoft.com/dotnet/runtime-deps:6.0.0
4+
ARG HOST_VERSION
5+
ARG JAVA_VERSION
6+
ARG JAVA_HOME
7+
8+
9+
10+
11+
COPY --from=runtime-image [ "/FuncExtensionBundles", "/FuncExtensionBundles" ]
12+
COPY sshd_config /etc/ssh/
13+
COPY start.sh /azure-functions-host/
14+
COPY --from=runtime-image [ "/azure-functions-host", "/azure-functions-host" ]
15+
16+
COPY --from=runtime-image [ "/workers/java", "/azure-functions-host/workers/java" ]
17+
18+
EXPOSE 2222 80
19+
20+
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
21+
HOME=/home \
22+
FUNCTIONS_WORKER_RUNTIME=java \
23+
DOTNET_USE_POLLING_FILE_WATCHER=true \
24+
HOST_VERSION=${HOST_VERSION} \
25+
ASPNETCORE_CONTENTROOT=/azure-functions-host \
26+
JAVA_HOME=${JAVA_HOME}
27+
28+
# Fix from https://github.com/GoogleCloudPlatform/google-cloud-dotnet-powerpack/issues/22#issuecomment-729895157
29+
RUN apt-get update && \
30+
apt-get install -y libc-dev wget && \
31+
wget https://aka.ms/download-jdk/microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz && \
32+
mkdir -p ${JAVA_HOME} && \
33+
tar -xzf microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz -C ${JAVA_HOME} --strip-components=1 && \
34+
rm -f microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz
35+
36+
RUN apt-get update && \
37+
apt-get install -y --no-install-recommends openssh-server dialog && \
38+
echo "root:Docker!" | chpasswd && \
39+
chmod +x /azure-functions-host/start.sh
40+
41+
ENTRYPOINT ["/azure-functions-host/start.sh"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#-------------------------------------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
4+
#-------------------------------------------------------------------------------------------------------------
5+
6+
FROM mcr.microsoft.com/azure-functions/java:4-java17-build
7+
8+
# Avoid warnings by switching to noninteractive
9+
ENV DEBIAN_FRONTEND=noninteractive
10+
11+
# This Dockerfile adds a non-root user with sudo access. Use the "remoteUser"
12+
# property in devcontainer.json to use it. On Linux, the container user's GID/UIDs
13+
# will be updated to match your local UID/GID (when using the dockerFile property).
14+
# See https://aka.ms/vscode-remote/containers/non-root-user for details.
15+
ARG USERNAME=vscode
16+
ARG USER_UID=1000
17+
ARG USER_GID=$USER_UID
18+
19+
# Configure apt and install packages
20+
RUN apt-get update \
21+
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \
22+
#
23+
# Verify git and needed tools are installed
24+
&& apt-get -y install \
25+
git \
26+
openssh-client \
27+
less \
28+
iproute2 \
29+
procps \
30+
curl \
31+
apt-transport-https \
32+
gnupg2 \
33+
lsb-release \
34+
#
35+
# Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.
36+
&& groupadd --gid $USER_GID $USERNAME \
37+
&& useradd -s /bin/bash --uid ${USER_UID} --gid ${USER_GID} -m $USERNAME \
38+
# [Optional] Add sudo support for the non-root user
39+
&& apt-get install -y sudo \
40+
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME\
41+
&& chmod 0440 /etc/sudoers.d/$USERNAME \
42+
#
43+
# Install wget and unzip
44+
&& apt-get install -y wget unzip \
45+
#
46+
# Install Azure Functions, .NET Core, and Azure CLI
47+
&& echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/azure-cli.list \
48+
&& echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list \
49+
&& curl -sL https://packages.microsoft.com/keys/microsoft.asc | (OUT=$(apt-key add - 2>&1) || echo $OUT) \
50+
&& apt-get update \
51+
&& apt-get install -y azure-cli dotnet-sdk-6.0 azure-functions-core-tools-4 \
52+
#
53+
# Clean up
54+
&& apt-get autoremove -y \
55+
&& apt-get clean -y \
56+
&& rm -rf /var/lib/apt/lists/*
57+
58+
# Switch back to dialog for any ad-hoc use of apt-get
59+
ENV DEBIAN_FRONTEND=dialog
+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Build the runtime from source
2+
ARG HOST_VERSION=4.3.0
3+
ARG JAVA_VERSION=17.0.2.8.1
4+
ARG JAVA_HOME=/usr/lib/jvm/msft-17-x64
5+
FROM mcr.microsoft.com/dotnet/sdk:6.0.100 AS runtime-image
6+
ARG HOST_VERSION
7+
ARG JAVA_VERSION
8+
ARG JAVA_HOME
9+
10+
ENV PublishWithAspNetCoreTargetManifest=false
11+
ENV DEBIAN_FRONTEND=noninteractive
12+
13+
RUN BUILD_NUMBER=$(echo ${HOST_VERSION} | cut -d'.' -f 3) && \
14+
git clone --branch v${HOST_VERSION} https://github.com/Azure/azure-functions-host /src/azure-functions-host && \
15+
cd /src/azure-functions-host && \
16+
HOST_COMMIT=$(git rev-list -1 HEAD) && \
17+
dotnet publish -v q /p:BuildNumber=$BUILD_NUMBER /p:CommitHash=$HOST_COMMIT src/WebJobs.Script.WebHost/WebJobs.Script.WebHost.csproj -c Release --output /azure-functions-host --runtime linux-x64 && \
18+
mv /azure-functions-host/workers /workers && mkdir /azure-functions-host/workers && \
19+
rm -rf /root/.local /root/.nuget /src
20+
21+
RUN apt-get update && \
22+
apt-get install -y gnupg wget unzip && \
23+
EXTENSION_BUNDLE_VERSION_V2=2.10.0 && \
24+
EXTENSION_BUNDLE_FILENAME_V2=Microsoft.Azure.Functions.ExtensionBundle.${EXTENSION_BUNDLE_VERSION_V2}_linux-x64.zip && \
25+
wget https://functionscdn.azureedge.net/public/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V2/$EXTENSION_BUNDLE_FILENAME_V2 && \
26+
mkdir -p /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V2 && \
27+
unzip /$EXTENSION_BUNDLE_FILENAME_V2 -d /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V2 && \
28+
rm -f /$EXTENSION_BUNDLE_FILENAME_V2 &&\
29+
EXTENSION_BUNDLE_VERSION_V3=3.7.0 && \
30+
EXTENSION_BUNDLE_FILENAME_V3=Microsoft.Azure.Functions.ExtensionBundle.${EXTENSION_BUNDLE_VERSION_V3}_linux-x64.zip && \
31+
wget https://functionscdn.azureedge.net/public/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V3/$EXTENSION_BUNDLE_FILENAME_V3 && \
32+
mkdir -p /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V3 && \
33+
unzip /$EXTENSION_BUNDLE_FILENAME_V3 -d /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V3 && \
34+
rm -f /$EXTENSION_BUNDLE_FILENAME_V3 &&\
35+
find /FuncExtensionBundles/ -type f -exec chmod 644 {} \;
36+
37+
RUN wget https://aka.ms/download-jdk/microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz && \
38+
mkdir -p ${JAVA_HOME} && \
39+
tar -xzf microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz -C ${JAVA_HOME} --strip-components=1 && \
40+
rm -f microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz
41+
42+
FROM mcr.microsoft.com/dotnet/runtime-deps:6.0.0
43+
ARG HOST_VERSION
44+
ARG JAVA_HOME
45+
46+
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
47+
HOME=/home \
48+
FUNCTIONS_WORKER_RUNTIME=java \
49+
DOTNET_USE_POLLING_FILE_WATCHER=true \
50+
HOST_VERSION=${HOST_VERSION} \
51+
ASPNETCORE_CONTENTROOT=/azure-functions-host \
52+
JAVA_HOME=${JAVA_HOME}
53+
54+
# Fix from https://github.com/GoogleCloudPlatform/google-cloud-dotnet-powerpack/issues/22#issuecomment-729895157
55+
RUN apt-get update && \
56+
apt-get install -y libc-dev
57+
58+
COPY --from=runtime-image [ "/azure-functions-host", "/azure-functions-host" ]
59+
COPY --from=runtime-image [ "/workers/java", "/azure-functions-host/workers/java" ]
60+
COPY --from=runtime-image [ "${JAVA_HOME}", "${JAVA_HOME}" ]
61+
COPY --from=runtime-image [ "/FuncExtensionBundles", "/FuncExtensionBundles" ]
62+
63+
CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ]

Diff for: host/4/bullseye/amd64/java/java17/java17.Dockerfile

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Build the runtime from source
2+
ARG HOST_VERSION=4.3.0
3+
ARG JAVA_VERSION=17.0.2.8.1
4+
ARG JAVA_HOME=/usr/lib/jvm/msft-17-x64
5+
FROM mcr.microsoft.com/dotnet/sdk:6.0.100 AS runtime-image
6+
ARG HOST_VERSION
7+
ARG JAVA_VERSION
8+
ARG JAVA_HOME
9+
10+
ENV PublishWithAspNetCoreTargetManifest=false
11+
ENV DEBIAN_FRONTEND=noninteractive
12+
13+
RUN BUILD_NUMBER=$(echo ${HOST_VERSION} | cut -d'.' -f 3) && \
14+
git clone --branch v${HOST_VERSION} https://github.com/Azure/azure-functions-host /src/azure-functions-host && \
15+
cd /src/azure-functions-host && \
16+
HOST_COMMIT=$(git rev-list -1 HEAD) && \
17+
dotnet publish -v q /p:BuildNumber=$BUILD_NUMBER /p:CommitHash=$HOST_COMMIT src/WebJobs.Script.WebHost/WebJobs.Script.WebHost.csproj -c Release --output /azure-functions-host --runtime linux-x64 && \
18+
mv /azure-functions-host/workers /workers && mkdir /azure-functions-host/workers && \
19+
rm -rf /root/.local /root/.nuget /src
20+
21+
RUN apt-get update && \
22+
apt-get install -y gnupg wget unzip && \
23+
EXTENSION_BUNDLE_VERSION_V2=2.10.0 && \
24+
EXTENSION_BUNDLE_FILENAME_V2=Microsoft.Azure.Functions.ExtensionBundle.${EXTENSION_BUNDLE_VERSION_V2}_linux-x64.zip && \
25+
wget https://functionscdn.azureedge.net/public/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V2/$EXTENSION_BUNDLE_FILENAME_V2 && \
26+
mkdir -p /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V2 && \
27+
unzip /$EXTENSION_BUNDLE_FILENAME_V2 -d /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V2 && \
28+
rm -f /$EXTENSION_BUNDLE_FILENAME_V2 &&\
29+
EXTENSION_BUNDLE_VERSION_V3=3.7.0 && \
30+
EXTENSION_BUNDLE_FILENAME_V3=Microsoft.Azure.Functions.ExtensionBundle.${EXTENSION_BUNDLE_VERSION_V3}_linux-x64.zip && \
31+
wget https://functionscdn.azureedge.net/public/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V3/$EXTENSION_BUNDLE_FILENAME_V3 && \
32+
mkdir -p /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V3 && \
33+
unzip /$EXTENSION_BUNDLE_FILENAME_V3 -d /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/$EXTENSION_BUNDLE_VERSION_V3 && \
34+
rm -f /$EXTENSION_BUNDLE_FILENAME_V3 &&\
35+
find /FuncExtensionBundles/ -type f -exec chmod 644 {} \;
36+
37+
RUN wget https://aka.ms/download-jdk/microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz && \
38+
mkdir -p ${JAVA_HOME} && \
39+
tar -xzf microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz -C ${JAVA_HOME} --strip-components=1 && \
40+
rm -f microsoft-jdk-${JAVA_VERSION}-linux-x64.tar.gz
41+
42+
FROM mcr.microsoft.com/dotnet/runtime-deps:6.0.0
43+
ARG HOST_VERSION
44+
ARG JAVA_HOME
45+
46+
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
47+
HOME=/home \
48+
FUNCTIONS_WORKER_RUNTIME=java \
49+
DOTNET_USE_POLLING_FILE_WATCHER=true \
50+
HOST_VERSION=${HOST_VERSION} \
51+
ASPNETCORE_CONTENTROOT=/azure-functions-host \
52+
JAVA_HOME=${JAVA_HOME}
53+
54+
# Fix from https://github.com/GoogleCloudPlatform/google-cloud-dotnet-powerpack/issues/22#issuecomment-729895157
55+
RUN apt-get update && \
56+
apt-get install -y libc-dev
57+
58+
COPY --from=runtime-image [ "/azure-functions-host", "/azure-functions-host" ]
59+
COPY --from=runtime-image [ "/workers/java", "/azure-functions-host/workers/java" ]
60+
COPY --from=runtime-image [ "${JAVA_HOME}", "${JAVA_HOME}" ]
61+
COPY --from=runtime-image [ "/FuncExtensionBundles", "/FuncExtensionBundles" ]
62+
63+
CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ]

Diff for: host/4/bullseye/amd64/java/java17/sshd_config

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# This is ssh server systemwide configuration file.
2+
#
3+
# /etc/sshd_config
4+
5+
Port SSH_PORT
6+
ListenAddress 0.0.0.0
7+
LoginGraceTime 180
8+
X11Forwarding yes
9+
Ciphers aes128-cbc,3des-cbc,aes256-cbc
10+
MACs hmac-sha1,hmac-sha1-96
11+
StrictModes yes
12+
SyslogFacility DAEMON
13+
PasswordAuthentication yes
14+
PermitEmptyPasswords no
15+
PermitRootLogin yes

Diff for: host/4/bullseye/amd64/java/java17/start.sh

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env bash
2+
3+
export DOTNET_USE_POLLING_FILE_WATCHER=true
4+
5+
if [ -z $PORT ]; then
6+
export ASPNETCORE_URLS=http://*:80
7+
else
8+
export ASPNETCORE_URLS=http://*:$PORT
9+
fi
10+
11+
if [ -z $SSH_PORT ]; then
12+
export SSH_PORT=2222
13+
fi
14+
15+
if [ "$APPSVC_REMOTE_DEBUGGING" == "TRUE" ]; then
16+
export languageWorkers__node__arguments="--inspect=0.0.0.0:$APPSVC_TUNNEL_PORT"
17+
export languageWorkers__python__arguments="-m ptvsd --host localhost --port $APPSVC_TUNNEL_PORT"
18+
fi
19+
20+
sed -i "s/SSH_PORT/$SSH_PORT/g" /etc/ssh/sshd_config
21+
22+
service ssh start
23+
24+
if [ -f /azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost ]; then
25+
/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost
26+
else
27+
dotnet /azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost.dll
28+
fi

0 commit comments

Comments
 (0)