HN 표시: Dockportless – 여러 AI 에이전트를 병렬로 실행하는 포트 충돌 없음

hackernews | | 💼 비즈니스
#ai 에이전트 #docker #로컬 개발 #자동화 #포트 충돌
원문 출처: hackernews · Genesis Park에서 요약 및 분석

요약

1. **Analyze the Request:** * **Role:** News summarization expert. * **Task:** Summarize the provided article. * **Constraint 1 (Length):** Concisely in 2-4 sentences. * **Constraint 2 (Content):** Focus on the most important information. * **Constraint 3 (Originality):** DO NOT copy-paste. * **Constraint 4 (Value Add):** DO NOT simply restate the title; add new info. * **Language:** English. * **Input:** Title ("Show HN: Dockportless – No port conflicts running multiple AI agents in parallel") and minimal Article Text (basically just the title repeated). 2. **Analyze the Input Data:** * *Title:* "Show HN: Dockportless – No port conflicts running multiple AI agents in parallel" * *Article Text:* "Show HN: Dockportless – No port conflicts running multiple AI agents in parallel\n\nSummary:" * *Observation:* The provided "Article Text" is extremely sparse. It's essentially just a repeat of the title and the word "Summary:". There is *no* body text describing features, technical details, implementation, or user comments. 3. **Determine the Strategy:** * Usually, I would read the body to find "new information beyond the title." * *Problem:* The prompt explicitly states "DO NOT simply restate the title. Add new information beyond the title." * *Challenge:* The input provided *contains* no information beyond the title. * *Hypothesis:* This might be a test of handling low-information inputs, or the user might have accidentally truncated the article. However, as an AI, I must process what is given. * *Refinement:* Since

본문

Local service router with automatic port assignment, like vercel/portless but for any compose-compatible tool. No more port conflicts. No more remembering port numbers. Just ..localhost . dockportless wraps any compose-compatible command (like docker compose up ) and automatically: - Parses your compose.yml to discover services - Assigns an available port to each service - Sets _PORT environment variables - Starts a reverse proxy so you can access services via ..localhost:7355 Inspired by vercel/portless — the same pretty-URL experience, brought to your local Docker Compose workflow. - Zero-config port management — Automatically assigns available ports, no collisions - Pretty local URLs — Access services at web.myapp.localhost:7355 instead oflocalhost:49152 - TLS SNI routing — Automatic protocol detection with TLS termination; routes any TCP protocol (HTTPS, PostgreSQL, Redis, Memcached, etc.) - Multi-port support — Services exposing multiple ports get indexed URLs ( 0.web.myapp.localhost ,1.web.myapp.localhost ) - Parallel worktree support — Develop multiple features simultaneously across git worktrees without port conflicts - Agent-friendly — Includes an Agent Skill for AI coding agents to automate dev environment setup - Single binary — Built in Zig, no runtime dependencies - Compose-compatible — Works with docker compose ,podman-compose ,nerdctl or any compose-spec tool Given a compose.yml : services: web: image: nginx:alpine ports: - "${WEB_PORT:-8080}:80" Run it with dockportless: dockportless run myapp docker compose up Access your service at: http://web.myapp.localhost:7355 Tip Your compose file still works without dockportless — docker compose up will use the default port (8080 in this example). brew install mazrean/tap/dockportless # Download the .deb from the latest release curl -LO https://github.com/mazrean/dockportless/releases/latest/download/dockportless_amd64.deb sudo dpkg -i dockportless_amd64.deb # Download the .rpm from the latest release curl -LO https://github.com/mazrean/dockportless/releases/latest/download/dockportless_amd64.rpm sudo rpm -i dockportless_amd64.rpm # Download the .apk from the latest release curl -LO https://github.com/mazrean/dockportless/releases/latest/download/dockportless_amd64.apk sudo apk add --allow-untrusted dockportless_amd64.apk Download the latest binary from GitHub Releases. Requires Zig 0.15+: zig build -Doptimize=ReleaseSafe Wraps a command with auto-assigned ports and starts the proxy. dockportless run Examples: # Basic usage dockportless run myapp docker compose up # With a custom compose file dockportless run myapp docker compose -f compose.dev.yml up # With podman dockportless run myapp podman-compose up Each service in your compose file gets a _PORT environment variable. Use them in your compose file: services: web: image: nginx:alpine ports: - "${WEB_PORT:-3000}:80" api: image: node:22-alpine ports: - "${API_PORT:-5678}:5678" Access them at: http://web.myapp.localhost:7355 http://api.myapp.localhost:7355 Starts only the proxy server. This is only needed when the proxy process is restarted while dockportless run is still running — for example, after a crash or manual restart. Under normal usage, dockportless run starts the proxy automatically. dockportless proxy Installs the dockportless CA certificate into your system trust store. Required for TLS SNI routing (HTTPS and PostgreSQL SSL). Needs elevated privileges. sudo dockportless trust Supported trust stores: - Linux: Debian/Ubuntu, RHEL/Fedora, Arch Linux, SUSE - macOS: System Keychain dockportless automatically detects the protocol of incoming connections and routes them accordingly: - HTTP — Routed by Host header - TLS (HTTPS, Redis, Memcached, etc.) — Routed by SNI hostname with TLS termination, then forwarded as plain TCP to the backend. Any TCP-based protocol works over TLS. - PostgreSQL SSL — Detects SSLRequest , upgrades to TLS, then routes by SNI To use TLS routing, first install the CA certificate: sudo dockportless trust Then access your services over HTTPS: https://web.myapp.localhost:7355 For PostgreSQL SSL connections: psql "host=db.myapp.localhost port=7355 sslmode=require" For Redis over TLS (using redli or any TLS-capable client): redli --tls -h cache.myapp.localhost -p 7355 When a service exposes multiple ports, dockportless assigns indexed environment variables and URLs: services: web: image: myapp ports: - "${WEB_PORT_0:-8080}:8080" # HTTP - "${WEB_PORT_1:-8443}:8443" # HTTPS Access each port via its index prefix: http://web.myapp.localhost:7355 → port index 0 (no prefix needed)http://1.web.myapp.localhost:7355 → port index 1 Note WEB_PORT is an alias for WEB_PORT_0 . For single-port services, everything works the same as before. dockportless is designed for developing multiple features in parallel using git worktrees. Each worktree gets its own project name, ports, and proxy routes — no collisions, no coordination needed. # Main worktree cd ~/myapp && dockportless run myapp d

Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.

공유

관련 저널 읽기

전체 보기 →