-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Initial Version of vscode DevContainer (#3217)
initial version of devcontainer --------- Signed-off-by: Dave Lee <[email protected]>
- Loading branch information
1 parent
5bb2321
commit 57f7900
Showing
9 changed files
with
169 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{ | ||
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json", | ||
"name": "LocalAI", | ||
"workspaceFolder": "/workspace", | ||
"dockerComposeFile": [ "./docker-compose-devcontainer.yml" ], | ||
"service": "api", | ||
"shutdownAction": "stopCompose", | ||
"customizations": { | ||
"vscode": { | ||
"extensions": [ | ||
"golang.go", | ||
"ms-vscode.makefile-tools", | ||
"ms-azuretools.vscode-docker", | ||
"ms-python.python", | ||
"ms-python.debugpy", | ||
"wayou.vscode-todo-highlight", | ||
"waderyan.gitblame" | ||
] | ||
} | ||
}, | ||
"forwardPorts": [8080, 3000], | ||
"postStartCommand": "make prepare && cp /build/backend-assets /workdir/backend-assets" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
services: | ||
api: | ||
build: | ||
context: .. | ||
dockerfile: Dockerfile | ||
target: devcontainer | ||
args: | ||
- FFMPEG=true | ||
- IMAGE_TYPE=extras | ||
- GO_TAGS=stablediffusion p2p tts | ||
env_file: | ||
- ../.env | ||
ports: | ||
- 8080:8080 | ||
volumes: | ||
- ..:/workspace:cached | ||
command: /bin/sh -c "while sleep 1000; do :; done" | ||
cap_add: | ||
- SYS_PTRACE | ||
security_opt: | ||
- seccomp:unconfined | ||
prometheus: | ||
image: prom/prometheus | ||
container_name: prometheus | ||
command: | ||
- '--config.file=/etc/prometheus/prometheus.yml' | ||
ports: | ||
- 9090:9090 | ||
restart: unless-stopped | ||
volumes: | ||
- ./prometheus:/etc/prometheus | ||
- prom_data:/prometheus | ||
grafana: | ||
image: grafana/grafana | ||
container_name: grafana | ||
ports: | ||
- 3000:3000 | ||
restart: unless-stopped | ||
environment: | ||
- GF_SECURITY_ADMIN_USER=admin | ||
- GF_SECURITY_ADMIN_PASSWORD=grafana | ||
volumes: | ||
- ./grafana:/etc/grafana/provisioning/datasources | ||
volumes: | ||
prom_data: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
|
||
apiVersion: 1 | ||
|
||
datasources: | ||
- name: Prometheus | ||
type: prometheus | ||
url: http://prometheus:9090 | ||
isDefault: true | ||
access: proxy | ||
editable: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
global: | ||
scrape_interval: 15s | ||
scrape_timeout: 10s | ||
evaluation_interval: 15s | ||
alerting: | ||
alertmanagers: | ||
- static_configs: | ||
- targets: [] | ||
scheme: http | ||
timeout: 10s | ||
api_version: v1 | ||
scrape_configs: | ||
- job_name: prometheus | ||
honor_timestamps: true | ||
scrape_interval: 15s | ||
scrape_timeout: 10s | ||
metrics_path: /metrics | ||
scheme: http | ||
static_configs: | ||
- targets: | ||
- localhost:9090 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
.idea | ||
.github | ||
.vscode | ||
.devcontainer | ||
models | ||
examples/chatbot-ui/models | ||
examples/rwkv/models | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,7 @@ FROM ${BASE_IMAGE} AS requirements-core | |
|
||
USER root | ||
|
||
ARG GO_VERSION=1.22.5 | ||
ARG GO_VERSION=1.22.6 | ||
ARG TARGETARCH | ||
ARG TARGETVARIANT | ||
|
||
|
@@ -30,7 +30,7 @@ RUN apt-get update && \ | |
|
||
# Install Go | ||
RUN curl -L -s https://go.dev/dl/go${GO_VERSION}.linux-${TARGETARCH}.tar.gz | tar -C /usr/local -xz | ||
ENV PATH $PATH:/root/go/bin:/usr/local/go/bin | ||
ENV PATH=$PATH:/root/go/bin:/usr/local/go/bin | ||
|
||
# Install grpc compilers | ||
RUN go install google.golang.org/protobuf/cmd/[email protected] && \ | ||
|
@@ -39,15 +39,18 @@ RUN go install google.golang.org/protobuf/cmd/[email protected] && \ | |
COPY --chmod=644 custom-ca-certs/* /usr/local/share/ca-certificates/ | ||
RUN update-ca-certificates | ||
|
||
RUN test -n "$TARGETARCH" \ | ||
|| (echo 'warn: missing $TARGETARCH, either set this `ARG` manually, or run using `docker buildkit`') | ||
|
||
# Use the variables in subsequent instructions | ||
RUN echo "Target Architecture: $TARGETARCH" | ||
RUN echo "Target Variant: $TARGETVARIANT" | ||
|
||
# Cuda | ||
ENV PATH /usr/local/cuda/bin:${PATH} | ||
ENV PATH=/usr/local/cuda/bin:${PATH} | ||
|
||
# HipBLAS requirements | ||
ENV PATH /opt/rocm/bin:${PATH} | ||
ENV PATH=/opt/rocm/bin:${PATH} | ||
|
||
# OpenBLAS requirements and stable diffusion | ||
RUN apt-get update && \ | ||
|
@@ -62,9 +65,6 @@ RUN ln -s /usr/include/opencv4/opencv2 /usr/include/opencv2 | |
|
||
WORKDIR /build | ||
|
||
RUN test -n "$TARGETARCH" \ | ||
|| (echo 'warn: missing $TARGETARCH, either set this `ARG` manually, or run using `docker buildkit`') | ||
|
||
################################### | ||
################################### | ||
|
||
|
@@ -217,28 +217,27 @@ RUN git clone --recurse-submodules --jobs 4 -b ${GRPC_VERSION} --depth 1 --shall | |
################################### | ||
################################### | ||
|
||
# The builder target compiles LocalAI. This target is not the target that will be uploaded to the registry. | ||
# Adjustments to the build process should likely be made here. | ||
FROM requirements-drivers AS builder | ||
# The builder-base target has the arguments, variables, and copies shared between full builder images and the uncompiled devcontainer | ||
|
||
FROM requirements-drivers AS builder-base | ||
|
||
ARG GO_TAGS="stablediffusion tts p2p" | ||
ARG GRPC_BACKENDS | ||
ARG MAKEFLAGS | ||
ARG LD_FLAGS="-s -w" | ||
|
||
ENV GRPC_BACKENDS=${GRPC_BACKENDS} | ||
ENV GO_TAGS=${GO_TAGS} | ||
ENV MAKEFLAGS=${MAKEFLAGS} | ||
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility | ||
ENV NVIDIA_REQUIRE_CUDA="cuda>=${CUDA_MAJOR_VERSION}.0" | ||
ENV NVIDIA_VISIBLE_DEVICES=all | ||
ENV LD_FLAGS=${LD_FLAGS} | ||
|
||
WORKDIR /build | ||
RUN echo "GO_TAGS: $GO_TAGS" && echo "TARGETARCH: $TARGETARCH" | ||
|
||
COPY . . | ||
COPY .git . | ||
RUN echo "GO_TAGS: $GO_TAGS" | ||
WORKDIR /build | ||
|
||
RUN make prepare | ||
|
||
# We need protoc installed, and the version in 22.04 is too old. We will create one as part installing the GRPC build below | ||
# but that will also being in a newer version of absl which stablediffusion cannot compile with. This version of protoc is only | ||
|
@@ -256,6 +255,20 @@ RUN <<EOT bash | |
fi | ||
EOT | ||
|
||
|
||
################################### | ||
################################### | ||
|
||
# The builder target compiles LocalAI. This target is not the target that will be uploaded to the registry. | ||
# Adjustments to the build process should likely be made here. | ||
FROM builder-base AS builder | ||
|
||
COPY . . | ||
COPY .git . | ||
|
||
RUN make prepare | ||
|
||
|
||
# stablediffusion does not tolerate a newer version of abseil, build it first | ||
RUN GRPC_BACKENDS=backend-assets/grpc/stablediffusion make build | ||
|
||
|
@@ -276,6 +289,33 @@ RUN if [ ! -d "/build/sources/go-piper/piper-phonemize/pi/lib/" ]; then \ | |
################################### | ||
################################### | ||
|
||
# The devcontainer target is not used on CI. It is a target for developers to use locally - | ||
# rather than copying files it mounts them locally and leaves building to the developer | ||
|
||
FROM builder-base AS devcontainer | ||
|
||
ARG FFMPEG | ||
|
||
COPY --from=grpc /opt/grpc /usr/local | ||
|
||
# This is somewhat of a dirty hack as this dev machine has issues with stablediffusion... but it should also speed up devcontainers? | ||
# localai/localai:latest-aio-cpu | ||
COPY --from=builder /build/backend-assets/grpc/stablediffusion /build/backend-assets/grpc/stablediffusion | ||
|
||
# Add FFmpeg | ||
RUN if [ "${FFMPEG}" = "true" ]; then \ | ||
apt-get update && \ | ||
apt-get install -y --no-install-recommends \ | ||
ffmpeg && \ | ||
apt-get clean && \ | ||
rm -rf /var/lib/apt/lists/* \ | ||
; fi | ||
|
||
RUN go install github.com/go-delve/delve/cmd/dlv@latest | ||
|
||
################################### | ||
################################### | ||
|
||
# This is the final target. The result of this target will be the image uploaded to the registry. | ||
# If you cannot find a more suitable place for an addition, this layer is a suitable place for it. | ||
FROM requirements-drivers | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,3 @@ | ||
version: '3.6' | ||
|
||
services: | ||
api: | ||
# See https://localai.io/basics/getting_started/#container-images for | ||
|