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
|
||||
fi
|
||||
|
||||
podman exec -it "${ID}" /bin/sh
|
||||
podman exec -it "${ID}" /bin/bash
|
||||
}
|
||||
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
|
||||
|
||||
## Credit
|
||||
https://github.com/mkslanc/websockets-ls
|
||||
https://github.com/lspcontainers/dockerfiles/servers
|
||||
|
||||
## 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.
|
||||
|
||||
## Features
|
||||
@@ -14,6 +20,7 @@ It supports various language servers concurrently and handles language-specific
|
||||
- Temporary file creation for `textDocument/didOpen` events.
|
||||
|
||||
## Usage
|
||||
##### Setup 1:
|
||||
|
||||
1. Install Node.js.
|
||||
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>`.
|
||||
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
|
||||
|
||||
Add or modify language server configurations in `languageServers.js`:
|
||||
|
||||
Reference in New Issue
Block a user