Updated Readmes; renamed servers to reference servers
This commit is contained in:
2
Docker/reference-servers/README.md
Normal file
2
Docker/reference-servers/README.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
## Credit
|
||||||
|
Files here were copied from https://github.com/lspcontainers/dockerfiles/servers.
|
||||||
@@ -18,6 +18,6 @@ function main() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
podman exec -it "${ID}" /bin/sh
|
podman exec -it "${ID}" /bin/bash
|
||||||
}
|
}
|
||||||
main $@;
|
main $@;
|
||||||
|
|||||||
@@ -1,67 +0,0 @@
|
|||||||
# LSP Dockerfiles
|
|
||||||
|
|
||||||
**Dockerfiles for Language Server Protocol (LSP) servers** - Containerized language servers for use with IDEs.
|
|
||||||
|
|
||||||
## Note:
|
|
||||||
Files under here were copied from https://github.com/lspcontainers/dockerfiles/servers. This README is modified from the repo as well.
|
|
||||||
|
|
||||||
## What is this?
|
|
||||||
|
|
||||||
This sub repository provides **production-ready Docker containers** for 25+ Language Server Protocol (LSP) servers.
|
|
||||||
|
|
||||||
### **How it works:**
|
|
||||||
1. **Docker containers** provide isolated, reproducible LSP server environments
|
|
||||||
3. **Zero local installation** - no need to install language servers on your system
|
|
||||||
|
|
||||||
Perfect for:
|
|
||||||
- **Consistent development environments** across teams and machines
|
|
||||||
- **Clean system** - no language server pollution on your host
|
|
||||||
- **Reproducible builds** with pinned package versions
|
|
||||||
- **Easy switching** between language server versions
|
|
||||||
|
|
||||||
## Supported Language Servers
|
|
||||||
|
|
||||||
| Language | Server | Container | Version |
|
|
||||||
|----------|--------|-----------|---------|
|
|
||||||
| **Bash** | bash-language-server | `servers/bash-language-server` |  |
|
|
||||||
| **C/C++** | clangd | `servers/clangd-language-server` |  |
|
|
||||||
| **C#** | omnisharp | `servers/omnisharp-language-server` |  |
|
|
||||||
| **CSS/SCSS/Less** | vscode-css-languageserver | `servers/css-language-server` |  |
|
|
||||||
| **Deno** | deno-lsp | `servers/deno-language-server` |  |
|
|
||||||
| **Docker** | dockerfile-ls | `servers/docker-language-server` |  |
|
|
||||||
| **ESLint** | eslint-languageserver | `servers/eslint-language-server` |  |
|
|
||||||
| **Go** | gopls | `servers/gopls` |  |
|
|
||||||
| **GraphQL** | graphql-language-service | `servers/graphql-language-server` |  |
|
|
||||||
| **HTML** | html-languageserver | `servers/html-language-server` |  |
|
|
||||||
| **JavaScript/TypeScript** | typescript-language-server | `servers/typescript-language-server` |  |
|
|
||||||
| **JSON** | vscode-json-languageserver | `servers/json-language-server` |  |
|
|
||||||
| **Lua** | lua-language-server | `servers/lua-language-server` |  |
|
|
||||||
| **PHP** | intelephense | `servers/php-language-server` |  |
|
|
||||||
| **PowerShell** | powershell-es | `servers/powershell-language-server` |  |
|
|
||||||
| **Prisma** | prisma-language-server | `servers/prisma-language-server` |  |
|
|
||||||
| **Python** | pylsp | `servers/python-lsp-server` |  |
|
|
||||||
| **Python** | pyright | `servers/pyright-language-server` |  |
|
|
||||||
| **Ruby** | solargraph | `servers/ruby-language-server` |  |
|
|
||||||
| **Rust** | rust-analyzer | `servers/rust-analyzer` |  |
|
|
||||||
| **Svelte** | svelte-language-server | `servers/svelte-language-server` |  |
|
|
||||||
| **Tailwind CSS** | tailwindcss-language-server | `servers/tailwindcss-language-server` |  |
|
|
||||||
| **Terraform** | terraform-ls | `servers/terraform-ls` |  |
|
|
||||||
| **Vue** | volar | `servers/volar-language-server` |  |
|
|
||||||
| **Vue** | vuels (legacy) | `servers/vue-language-server` |  |
|
|
||||||
| **XML** | lemminx | `servers/xml-language-server` |  |
|
|
||||||
| **YAML** | yaml-language-server | `servers/yaml-language-server` |  |
|
|
||||||
|
|
||||||
|
|
||||||
## Architecture & Design
|
|
||||||
|
|
||||||
### **Reproducible Builds**
|
|
||||||
All containers use **pinned package versions** for complete reproducibility:
|
|
||||||
- **Base images**: Specific Alpine/Debian versions
|
|
||||||
- **System packages**: Exact apk/apt package versions
|
|
||||||
- **Language packages**: Pinned npm, gem, pip, go module versions
|
|
||||||
|
|
||||||
### **Minimal & Secure**
|
|
||||||
- **Alpine Linux base** for minimal attack surface
|
|
||||||
- **Multi-stage builds** where applicable
|
|
||||||
- **Non-root users** for security
|
|
||||||
- **Distroless principles** - only essential components
|
|
||||||
20
README.md
20
README.md
@@ -1,7 +1,13 @@
|
|||||||
# Newton LSP Server Bridge
|
# Newton LSP Server Bridge
|
||||||
|
|
||||||
|
## Credit
|
||||||
|
https://github.com/mkslanc/websockets-ls
|
||||||
|
https://github.com/lspcontainers/dockerfiles/servers
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
This script provides a WebSocket bridge to interface with multiple Language Servers through clients via a single WebSocket connection.
|
This repo provides a primary Dockerfile (with additional example standalone LSP Dockler files from `lspcontainers`) that packages a number of LSPs and tools into a container along with the src/ folder code.
|
||||||
|
The code under src/ comes from `websockets-ls` and has been cleaned up and formatted to my style/asthetics as well as modified server list.
|
||||||
|
The code creates a WebSocket bridge to interface with multiple Language Servers through clients via a single WebSocket connection.
|
||||||
It supports various language servers concurrently and handles language-specific file extensions and initialization parameters.
|
It supports various language servers concurrently and handles language-specific file extensions and initialization parameters.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
@@ -14,6 +20,7 @@ It supports various language servers concurrently and handles language-specific
|
|||||||
- Temporary file creation for `textDocument/didOpen` events.
|
- Temporary file creation for `textDocument/didOpen` events.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
##### Setup 1:
|
||||||
|
|
||||||
1. Install Node.js.
|
1. Install Node.js.
|
||||||
2. Run 'npm install'.
|
2. Run 'npm install'.
|
||||||
@@ -22,6 +29,17 @@ It supports various language servers concurrently and handles language-specific
|
|||||||
5. Connect to the WebSocket server on `ws://localhost:9999/<language_endpoint>`.
|
5. Connect to the WebSocket server on `ws://localhost:9999/<language_endpoint>`.
|
||||||
6. Transmit LSP messages via the WebSocket connection.
|
6. Transmit LSP messages via the WebSocket connection.
|
||||||
|
|
||||||
|
##### Setup 2:
|
||||||
|
|
||||||
|
1. Install Podman.
|
||||||
|
2. Create `opt/` folder in `Docker/` and add any additional programs there.
|
||||||
|
3. Configure the desired language servers in `src/defaultServers.js`.
|
||||||
|
3. Configure the start script at `Docker/scripts/start.sh` with abny additional env args or mount points.
|
||||||
|
4. Run from `Newton-LSP/` `Docker/build.sh` .
|
||||||
|
5. Run `Docker/scripts/start.sh`
|
||||||
|
6. Connect to the WebSocket server on `ws://localhost:9999/<language_endpoint>`.
|
||||||
|
7. Transmit LSP messages via the WebSocket connection.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
Add or modify language server configurations in `languageServers.js`:
|
Add or modify language server configurations in `languageServers.js`:
|
||||||
|
|||||||
Reference in New Issue
Block a user