From 3e98486190486519f6e4e48a064956311d86556d Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 Jun 2023 16:14:24 +0200 Subject: [PATCH] fully dockerized development with VS-code devcontainers (#524) Co-authored-by: bll --- .devcontainer/devcontainer.json | 57 ++++++++++++++++++++++++ .devcontainer/docker-compose.yml | 76 ++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..7ccf7f627b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,57 @@ +// { +// "name": "LibreChat_dev", +// // Update the 'dockerComposeFile' list if you have more compose files or use different names. +// "dockerComposeFile": "docker-compose.yml", +// // The 'service' property is the name of the service for the container that VS Code should +// // use. Update this value and .devcontainer/docker-compose.yml to the real service name. +// "service": "librechat", +// // The 'workspaceFolder' property is the path VS Code should open by default when +// // connected. Corresponds to a volume mount in .devcontainer/docker-compose.yml +// "workspaceFolder": "/workspace" +// //, +// // // Set *default* container specific settings.json values on container create. +// // "settings": {}, +// // // Add the IDs of extensions you want installed when the container is created. +// // "extensions": [], +// // Uncomment the next line if you want to keep your containers running after VS Code shuts down. +// // "shutdownAction": "none", +// // Uncomment the next line to use 'postCreateCommand' to run commands after the container is created. +// // "postCreateCommand": "uname -a", +// // Comment out to connect as root instead. To add a non-root user, see: https://aka.ms/vscode-remote/containers/non-root. +// // "remoteUser": "vscode" +// } +{ + // "name": "LibreChat_dev", + "dockerComposeFile": "docker-compose.yml", + "service": "app", + // "image": "node:19-alpine", + // "workspaceFolder": "/workspaces", + "workspaceFolder": "/workspace", + // Set *default* container specific settings.json values on container create. + // "overrideCommand": true, + "customizations": { + "vscode": { + "extensions": [], + "settings": { + "terminal.integrated.profiles.linux": { + "bash": null + } + } + } + }, + "postCreateCommand": "" + // "workspaceMount": "src=${localWorkspaceFolder},dst=/code,type=bind,consistency=cached" + + // "runArgs": [ + // "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined", + // "-v", "/tmp/.X11-unix:/tmp/.X11-unix", + // "-v", "${env:XAUTHORITY}:/root/.Xauthority:rw", + // "-v", "/home/${env:USER}/.cdh:/root/.cdh", + // "-e", "DISPLAY=${env:DISPLAY}", + // "--name=tgw_assistant_backend_dev", + // "--network=host" + // ], + // "settings": { + // "terminal.integrated.shell.linux": "/bin/bash" + // }, +} \ No newline at end of file diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 0000000000..39422f5845 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,76 @@ +version: '3.4' + +services: + app: + # container_name: LibreChat_dev + image: node:19-alpine + # Using a Dockerfile is optional, but included for completeness. + # build: + # context: . + # dockerfile: Dockerfile + # # [Optional] You can use build args to set options. e.g. 'VARIANT' below affects the image in the Dockerfile + # args: + # VARIANT: buster + network_mode: "host" + # ports: + # - 3080:3080 # Change it to 9000:3080 to use nginx + extra_hosts: # if you are running APIs on docker you need access to, you will need to uncomment this line and next + - "host.docker.internal:host-gateway" + + volumes: + # # This is where VS Code should expect to find your project's source code and the value of "workspaceFolder" in .devcontainer/devcontainer.json + - ..:/workspace:cached + # # - /app/client/node_modules + # # - ./api:/app/api + # # - ./.env:/app/.env + # # - ./.env.development:/app/.env.development + # # - ./.env.production:/app/.env.production + # # - /app/api/node_modules + + # # Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker-compose for details. + # # - /var/run/docker.sock:/var/run/docker.sock + + # Runs app on the same network as the service container, allows "forwardPorts" in devcontainer.json function. + # network_mode: service:another-service + + # Use "forwardPorts" in **devcontainer.json** to forward an app port locally. + # (Adding the "ports" property to this file will not forward from a Codespace.) + + # Uncomment the next line to use a non-root user for all processes - See https://aka.ms/vscode-remote/containers/non-root for details. + # user: vscode + + # Uncomment the next four lines if you will use a ptrace-based debugger like C++, Go, and Rust. + # cap_add: + # - SYS_PTRACE + # security_opt: + # - seccomp:unconfined + + # Overrides default command so things don't shut down after the process ends. + command: /bin/sh -c "while sleep 1000; do :; done" + + mongodb: + container_name: chat-mongodb + network_mode: "host" + # ports: + # - 27018:27017 + image: mongo + # restart: always + volumes: + - ./data-node:/data/db + command: mongod --noauth + meilisearch: + container_name: chat-meilisearch + image: getmeili/meilisearch:v1.0 + network_mode: "host" + # ports: + # - 7700:7700 + # env_file: + # - .env + environment: + - SEARCH=false + - MEILI_HOST=http://0.0.0.0:7700 + - MEILI_HTTP_ADDR=0.0.0.0:7700 + - MEILI_MASTER_KEY=5c71cf56d672d009e36070b5bc5e47b743535ae55c818ae3b735bb6ebfb4ba63 + volumes: + - ./meili_data:/meili_data +