Skip to content

Commit

Permalink
allow devcontainers to work with full services
Browse files Browse the repository at this point in the history
  • Loading branch information
Christopher Harrison committed Feb 28, 2024
1 parent cffb06a commit 8e71051
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 18 deletions.
48 changes: 30 additions & 18 deletions devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,36 +1,48 @@
{

"name": "LLMWARE Dev",
//"build": { "dockerfile": "../Dockerfile" },
//"image": "provocoai/llmware:dev-01", //
"dockerComposeFile": "../docker-compose.yaml",
"service": "llmware",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
//"remoteUser": "llmware",

// This is the image to use if doing development on only the llmware code base
//"image": "provocoai/llmware:dev-01", /
// using the dockerComposeFile option allows us to setup
// the full env around the llm code base include milvus and mongodb.
"dockerComposeFile": "docker-compose.yaml",

"service": "llmware", // we define the container to connect too

// update based on individual perference and mount point defined below
"workspaceFolder": "/llmware",

// "remoteUser": "llmware", //used with docker instead of podman
// "containerUser": "llmware", // used with docker instead of podman

// when we close the devcontainer env make sure we clean up after ourselfs
"shutdownAction": "stopCompose",

// needed for podman to keep the id's the same
"runArgs": [
"--name",
"${localWorkspaceFolderBasename}", // Container name
"-it",
"-l",
"com.docker.compose.project=devcontainers" // Container group name
"--userns=keep-id"
],
// you can setup your local directory in the devcontainer here. The mount line is an example and mounts your home directory into the /code directory

// Define the mountpoints into the llmware container.
// I use $HOMEDIR/code/provoco as my default codebase and
// then set the target to /code so I have access to all my code in /code
"mounts" : [
//"source=${localEnv:HOME},target=/code,type=bind,consistency=cached"
"source=${localEnv:HOME}/code/provoco,target=/code,Z,type=bind,consistency=cached"
// "source=${localENV:HOME}/.vscode-server,target=/root/.vscode-server,Z,type=bind,consistency=cached"
],

// setup the github cli feature so we can commit within the UI
"features": {
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
"dockerDashComposeVersion": "v2"
},
"ghcr.io/devcontainers/features/github-cli:1": {}
"ghcr.io/devcontainers/features/github-cli:1": {}
},

"customizations": {
"vscode": {
"extensions": [
"esbenp.prettier-vscode", // prettify the code extension
"ms-python.python", //python code extensions
"ms-python.vscode-pylance" / vscode python extension
"ms-python.vscode-pylance" // vscode python extension
]
}
}
Expand Down
53 changes: 53 additions & 0 deletions devcontainer/devcontainer.json-single.bk
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"name": "LLMWARE Dev",
//"build": { "dockerfile": "../Dockerfile" },
"containerUser": "llmware",
"updateRemoteUserUID": true,
"image": "provocoai/llmware:dev-01",
"remoteUser": "llmware",
"runArgs": [
"--userns=keep-id:uid=1000,gid=1000"
],


// "runArgs": [
// "--name",
// "${localWorkspaceFolderBasename}", // Container name
// "-it",
// "-l",
// "com.docker.compose.project=devcontainers" // Container group name
// ],
// you can setup your local directory in the devcontainer here. The mount line is an example and mounts your home directory into the /code directory
"mounts" : [
"source=/home/harrison/code/provoco,target=/code,type=bind,consistency=cached,Z",
"source=/home/harrison/.vscode,target=/root/.vscode,type=bind,consistency=cached,Z"
],
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
//"mongodb.mongodb-vscode",
"ms-python.python"
//"ms-azuretools.vscode-docker"
]
}
},
"postCreateCommand": "apt-get install ",
"features": {}
// "features": {
// "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
// "dockerDashComposeVersion": "v2"
// },
// "ghcr.io/devcontainers/features/github-cli:1": {}
// },
// "customizations": {
// "vscode": {
// "extensions": [
// "esbenp.prettier-vscode", // prettify the code extension
// "ms-python.python", //python code extensions
// "ms-python.vscode-pylance" // vscode python extension
// ]
// }
// }
}
108 changes: 108 additions & 0 deletions devcontainer/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
version: "3.5"

services:
llmware:
container_name: llmware
image: provocoai/llmware:dev-01
depends_on:
- "milvus"
- "mongodb"
command: sleep infinity
network_mode: host

mongodb:
container_name: mongodb
image: mongo:5.0.10
# To secure MongoDB, uncomment and set the following values
# environment:
# - MONGO_INITDB_DATABASE=admin
# - MONGO_INITDB_ROOT_USERNAME=admin
# - MONGO_INITDB_ROOT_PASSWORD=changeme
volumes:
- llmware-mongodb:/data/db:Z
ports:
- '27017:27017'

etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.5
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- llmware-etcd:/etcd:Z
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 30s
timeout: 20s
retries: 3

minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
environment:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
ports:
- "9001:9001"
- "9000:9000"
volumes:
- llmware-minio:/minio_data:Z
command: minio server /minio_data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3

milvus:
container_name: milvus
image: milvusdb/milvus:v2.3.0
command: ["milvus", "run", "standalone"]
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
volumes:
- llmware-milvus:/var/lib/milvus:Z
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 30s
start_period: 90s
timeout: 20s
retries: 3
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- "etcd"
- "minio"


dev-neo4j:
container_name: devneo4j
hostname: neo4j
image: neo4j:5.15.0-community
ports:
- 7474:7474
- 7687:7687
restart: always

volumes:
- $HOME/neo4j/data:/data:Z
- $HOME/neo4j/logs:/logs:Z

environment:
- NEO4J_AUTH=none

volumes:
llmware-mongodb:
driver: local
llmware-etcd:
driver: local
llmware-minio:
driver: local
llmware-milvus:
driver: local

0 comments on commit 8e71051

Please sign in to comment.