mirror of
https://github.com/mudler/LocalAI.git
synced 2024-12-18 20:27:57 +00:00
feat: devcontainer part 3 (#3318)
* stash initial fixes, attempt to open branch inside container Signed-off-by: Dave Lee <dave@gray101.com> * add yq, from inside DC Signed-off-by: Dave Lee <dave@gray101.com> * stash progress, rebuild container Signed-off-by: Dave Lee <dave@gray101.com> * snap Signed-off-by: Dave Lee <dave@gray101.com> * split builder into builder-sd, will speed up devcontainer build times and potentially help caching in other situations. Signed-off-by: Dave Lee <dave@gray101.com> * fix yq Signed-off-by: Dave Lee <dave@gray101.com> * fix paths Signed-off-by: Dave Lee <dave@gray101.com> * fix paths - new folder to bypass the .dockerignore which _should_ exclude the other files Signed-off-by: Dave Lee <dave@gray101.com> * fix Signed-off-by: Dave Lee <dave@gray101.com> * fix ] Signed-off-by: Dave Lee <dave@gray101.com> --------- Signed-off-by: Dave Lee <dave@gray101.com>
This commit is contained in:
parent
dfa183551e
commit
9a8a249932
17
.devcontainer-scripts/postcreate.sh
Normal file
17
.devcontainer-scripts/postcreate.sh
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /workspace
|
||||||
|
|
||||||
|
# Get the files into the volume without a bind mount
|
||||||
|
if [ ! -d ".git" ]; then
|
||||||
|
git clone https://github.com/mudler/LocalAI.git .
|
||||||
|
else
|
||||||
|
git fetch
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Standard Post-Create script completed."
|
||||||
|
|
||||||
|
if [ -f "/devcontainer-customization/postcreate.sh" ]; then
|
||||||
|
echo "Launching customization postcreate.sh"
|
||||||
|
bash "/devcontainer-customization/postcreate.sh"
|
||||||
|
fi
|
16
.devcontainer-scripts/poststart.sh
Normal file
16
.devcontainer-scripts/poststart.sh
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /workspace
|
||||||
|
|
||||||
|
# Grab the pre-stashed backend assets to avoid build issues
|
||||||
|
cp -r /build/backend-assets /workspace/backend-assets
|
||||||
|
|
||||||
|
# Ensures generated source files are present upon load
|
||||||
|
make prepare
|
||||||
|
|
||||||
|
echo "Standard Post-Start script completed."
|
||||||
|
|
||||||
|
if [ -f "/devcontainer-customization/poststart.sh" ]; then
|
||||||
|
echo "Launching customization poststart.sh"
|
||||||
|
bash "/devcontainer-customization/poststart.sh"
|
||||||
|
fi
|
20
.devcontainer/customization/README.md
Normal file
20
.devcontainer/customization/README.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Place any additional resources your environment requires in this directory
|
||||||
|
|
||||||
|
Script hooks are currently called for:
|
||||||
|
`postcreate.sh` and `poststart.sh`
|
||||||
|
|
||||||
|
If files with those names exist here, they will be called at the end of the normal script.
|
||||||
|
|
||||||
|
This is a good place to set things like `git config --global user.name` are set - and to handle any other files that are mounted via this directory.
|
||||||
|
|
||||||
|
An example of a useful script might be:
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/bin/bash
|
||||||
|
gcn=$(git config --global user.name)
|
||||||
|
if [ -z "$gcn" ]; then
|
||||||
|
git config --global user.name YOUR.NAME
|
||||||
|
git config --global user.email YOUR.EMAIL
|
||||||
|
git remote add PREFIX FORK_URL
|
||||||
|
fi
|
||||||
|
```
|
@ -19,6 +19,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"forwardPorts": [8080, 3000],
|
"forwardPorts": [8080, 3000],
|
||||||
"postCreateCommand": "git clone https://github.com/mudler/LocalAI.git .",
|
"postCreateCommand": "bash /.devcontainer-scripts/postcreate.sh",
|
||||||
"postStartCommand": "make prepare && cp -r /build/backend-assets /workspace/backend-assets"
|
"postStartCommand": "bash /.devcontainer-scripts/poststart.sh"
|
||||||
}
|
}
|
@ -14,6 +14,8 @@ services:
|
|||||||
- 8080:8080
|
- 8080:8080
|
||||||
volumes:
|
volumes:
|
||||||
- localai_workspace:/workspace
|
- localai_workspace:/workspace
|
||||||
|
- ../models:/host-models
|
||||||
|
- ./customization:/devcontainer-customization
|
||||||
command: /bin/sh -c "while sleep 1000; do :; done"
|
command: /bin/sh -c "while sleep 1000; do :; done"
|
||||||
cap_add:
|
cap_add:
|
||||||
- SYS_PTRACE
|
- SYS_PTRACE
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -54,3 +54,6 @@ docs/static/gallery.html
|
|||||||
|
|
||||||
# backend virtual environments
|
# backend virtual environments
|
||||||
**/venv
|
**/venv
|
||||||
|
|
||||||
|
# per-developer customization files for the development container
|
||||||
|
.devcontainer/customization/*
|
29
Dockerfile
29
Dockerfile
@ -260,9 +260,9 @@ EOT
|
|||||||
###################################
|
###################################
|
||||||
###################################
|
###################################
|
||||||
|
|
||||||
# The builder target compiles LocalAI. This target is not the target that will be uploaded to the registry.
|
# This first portion of builder holds the layers specifically used to build backend-assets/grpc/stablediffusion
|
||||||
# Adjustments to the build process should likely be made here.
|
# In most cases, builder is the image you should be using - however, this can save build time if one just needs to copy backend-assets/grpc/stablediffusion and nothing else.
|
||||||
FROM builder-base AS builder
|
FROM builder-base AS builder-sd
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
COPY .git .
|
COPY .git .
|
||||||
@ -273,6 +273,13 @@ RUN make prepare
|
|||||||
# stablediffusion does not tolerate a newer version of abseil, build it first
|
# stablediffusion does not tolerate a newer version of abseil, build it first
|
||||||
RUN GRPC_BACKENDS=backend-assets/grpc/stablediffusion make build
|
RUN GRPC_BACKENDS=backend-assets/grpc/stablediffusion make build
|
||||||
|
|
||||||
|
###################################
|
||||||
|
###################################
|
||||||
|
|
||||||
|
# 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-sd AS builder
|
||||||
|
|
||||||
# Install the pre-built GRPC
|
# Install the pre-built GRPC
|
||||||
COPY --from=grpc /opt/grpc /usr/local
|
COPY --from=grpc /opt/grpc /usr/local
|
||||||
|
|
||||||
@ -299,9 +306,9 @@ ARG FFMPEG
|
|||||||
|
|
||||||
COPY --from=grpc /opt/grpc /usr/local
|
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?
|
COPY --from=builder-sd /build/backend-assets/grpc/stablediffusion /build/backend-assets/grpc/stablediffusion
|
||||||
# localai/localai:latest-aio-cpu
|
|
||||||
COPY --from=builder /build/backend-assets/grpc/stablediffusion /build/backend-assets/grpc/stablediffusion
|
COPY .devcontainer-scripts /.devcontainer-scripts
|
||||||
|
|
||||||
# Add FFmpeg
|
# Add FFmpeg
|
||||||
RUN if [ "${FFMPEG}" = "true" ]; then \
|
RUN if [ "${FFMPEG}" = "true" ]; then \
|
||||||
@ -312,8 +319,16 @@ RUN if [ "${FFMPEG}" = "true" ]; then \
|
|||||||
rm -rf /var/lib/apt/lists/* \
|
rm -rf /var/lib/apt/lists/* \
|
||||||
; fi
|
; fi
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
ssh less && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN go install github.com/go-delve/delve/cmd/dlv@latest
|
RUN go install github.com/go-delve/delve/cmd/dlv@latest
|
||||||
|
|
||||||
|
RUN go install github.com/mikefarah/yq/v4@latest
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
###################################
|
###################################
|
||||||
|
|
||||||
@ -367,7 +382,7 @@ COPY --from=builder /build/local-ai ./
|
|||||||
COPY --from=builder /build/sources/go-piper/piper-phonemize/pi/lib/* /usr/lib/
|
COPY --from=builder /build/sources/go-piper/piper-phonemize/pi/lib/* /usr/lib/
|
||||||
|
|
||||||
# do not let stablediffusion rebuild (requires an older version of absl)
|
# do not let stablediffusion rebuild (requires an older version of absl)
|
||||||
COPY --from=builder /build/backend-assets/grpc/stablediffusion ./backend-assets/grpc/stablediffusion
|
COPY --from=builder-sd /build/backend-assets/grpc/stablediffusion ./backend-assets/grpc/stablediffusion
|
||||||
|
|
||||||
# Change the shell to bash so we can use [[ tests below
|
# Change the shell to bash so we can use [[ tests below
|
||||||
SHELL ["/bin/bash", "-c"]
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
Loading…
Reference in New Issue
Block a user