From c36b241fcf08e44e304dcfed9207ba75093d04fa Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Sun, 7 Jan 2024 04:15:00 +0000 Subject: [PATCH 1/3] feat: integrate `code-server` with the container image (cherry picked from commit ac547afab2272019bd642f1da68dd8dd3e834104) (cherry picked from commit 4754203a503bbeaa0c749411678028636fffa480) (cherry picked from commit 0c24ba1b029cbfb4ba6d8ea798a6322d2462021a) --- Dockerfile | 38 +++++++++++++++++++++++++++++++++++--- bin/entrypoint.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 bin/entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 8cc295456..022d1ab1a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,10 @@ # syntax=docker/dockerfile:1.4 FROM rust:1.74.1-bookworm as builder + ARG TARGETPLATFORM ARG GIT_V_VERSION ARG ONNXRUNTIME_VERSION=1.17.0 + RUN apt-get update && apt-get install -y llvm-dev libclang-dev clang cmake WORKDIR /usr/src/edge-runtime RUN --mount=type=cache,target=/usr/local/cargo/registry,id=${TARGETPLATFORM} \ @@ -16,11 +18,41 @@ RUN ./scripts/install_onnx.sh $ONNXRUNTIME_VERSION $TARGETPLATFORM /root/libonnx FROM debian:bookworm-slim + +ARG TARGETARCH +ARG USE_CODE_SERVER_INTEGRATION + +ENV USE_CODE_SERVER_INTEGRATION ${USE_CODE_SERVER_INTEGRATION} +ENV DENO_VERSION 1.40.3 +ENV CODE_SERVER_VERSION 4.20.0 +ENV CODE_SERVER_HOST 0.0.0.0 +ENV CODE_SERVER_PORT 8999 +ENV CODE_SERVER_EXTENSIONS denoland.vscode-deno +ENV ORT_DYLIB_PATH=/usr/local/bin/libonnxruntime.so +ENV SB_AI_MODELS_DIR=/etc/sb_ai/models + RUN apt-get update && apt-get install -y libssl-dev && rm -rf /var/lib/apt/lists/* RUN apt-get remove -y perl && apt-get autoremove -y + COPY --from=builder /root/edge-runtime /usr/local/bin/edge-runtime COPY --from=builder /root/libonnxruntime.so /usr/local/bin/libonnxruntime.so COPY ./models /etc/sb_ai/models -ENV ORT_DYLIB_PATH=/usr/local/bin/libonnxruntime.so -ENV SB_AI_MODELS_DIR=/etc/sb_ai/models -ENTRYPOINT ["edge-runtime"] +COPY ./bin/entrypoint.sh /usr/local/bin + +RUN chmod u+x /usr/local/bin/entrypoint.sh + +# vscode-server integration +RUN if [ -n "$USE_CODE_SERVER_INTEGRATION" ]; then \ + apt-get update && apt-get install -y ca-certificates curl wget unzip dumb-init \ + && wget https://github.com/coder/code-server/releases/download/v${CODE_SERVER_VERSION}/code-server_${CODE_SERVER_VERSION}_${TARGETARCH}.deb -P /tmp \ + && dpkg -i /tmp/code-server_${CODE_SERVER_VERSION}_${TARGETARCH}.deb \ + && rm -f /tmp/code-server_${CODE_SERVER_VERSION}_${TARGETARCH}.deb; \ + if [ "${TARGETARCH}" = "arm64" ]; then \ + wget https://github.com/LukeChannings/deno-arm64/releases/download/v${DENO_VERSION}/deno-linux-arm64.zip -P /tmp \ + && unzip /tmp/deno-linux-arm64.zip -d /usr/local/bin; \ + else \ + curl -fsSL https://deno.land/install.sh | DENO_INSTALL=/usr/local sh; \ + fi \ + fi + +ENTRYPOINT ["dumb-init", "--", "/usr/local/bin/entrypoint.sh"] diff --git a/bin/entrypoint.sh b/bin/entrypoint.sh new file mode 100644 index 000000000..8bc445d3c --- /dev/null +++ b/bin/entrypoint.sh @@ -0,0 +1,40 @@ +#!/bin/bash +set -eu + +export PS1='\w $ ' + +EXTENSIONS="${CODE_SERVER_EXTENSIONS:-none}" + +if [ -z "$USE_CODE_SERVER_INTEGRATION" ]; then + edge-runtime $@ & +else + mkdir -p /root/.local/share/code-server/User + cat > /root/.local/share/code-server/User/settings.json << EOF + { + "workbench.colorTheme": "Visual Studio Dark", + "deno.enable": true + } +EOF + + if [ ${EXTENSIONS} != "none" ]; then + echo "Installing Extensions" + for extension in $(echo ${EXTENSIONS} | tr "," "\n") + do + if [ "${extension}" != "" ]; then + /usr/bin/code-server \ + --install-extension "${extension}" \ + /home/deno/functions + fi + done + fi + + (/usr/bin/code-server \ + --bind-addr "${CODE_SERVER_HOST}":"${CODE_SERVER_PORT}" \ + --auth none \ + /home/deno/functions \ + ) & + + edge-runtime $@ & +fi + +wait -n \ No newline at end of file From a2c1845f5bfd61988348ab4ca76a3ceb01d285fd Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Sat, 20 Jan 2024 10:59:03 +0900 Subject: [PATCH 2/3] stamp: define the dev container for the development environment (cherry picked from commit e425db4a0544c4c6f749f296f3869f39db3ad30c) --- .devcontainer/Dockerfile | 5 +++++ .devcontainer/devcontainer.json | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..116f0087f --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,5 @@ +FROM mcr.microsoft.com/devcontainers/rust:1-1-bookworm +RUN apt-get update && apt-get install -y build-essential cmake libclang-dev lldb +RUN wget https://github.com/tsenart/vegeta/releases/download/v12.11.1/vegeta_12.11.1_linux_arm64.tar.gz +RUN tar -xvf vegeta_12.11.1_linux_arm64.tar.gz +RUN mv ./vegeta /usr/local/bin/vegeta \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..972888108 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,23 @@ +{ + "name": "Rust", + "build": { + "dockerfile": "Dockerfile" + }, + "features": { + "ghcr.io/jungaretti/features/make:1": {}, + "ghcr.io/lee-orr/rusty-dev-containers/cargo-make:0": {} + }, + "runArgs": [ + "--rm", + "--privileged" + ], + "customizations": { + "vscode": { + "extensions": [ + "rust-lang.rust-analyzer", + "eamodio.gitlens", + "ms-azuretools.vscode-docker" + ] + } + } +} \ No newline at end of file From 438344e7837b4a4340ad8a45fc8c50aa6bb25079 Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Sat, 20 Jan 2024 10:59:20 +0900 Subject: [PATCH 3/3] chore: add `.dockerignore` (cherry picked from commit 3ccd45cb4c185a99c0cc72df51333da6aed8bf69) --- .dockerignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..2f7896d1d --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +target/