Sign inSign up

zachbg/port-forward

By zachbg

•Updated 6 months ago

TCP/UDP port forwarding between Docker networks or external hosts via socat

Image
1

1.7K

zachbg/port-forward repository overview

⁠Port Forward

Dead-simple TCP/UDP port forwarding between Docker networks, containers, or external hosts. One container, two environment variables.

⁠Why?

Docker networks are isolated by design. Sometimes you need container A (on network X) to reach container B (on network Y), or you need to expose a database on a different port, or bridge two networks without merging them. This does it in one line.

⁠Quick Start

services:
  # Forward local port 3307 to your database on port 3306
  db-forward:
    image: zachbg/port-forward:latest
    restart: unless-stopped
    ports:
      - "3307:3306"
    environment:
      REMOTE_HOST: database
      REMOTE_PORT: 3306
    networks:
      - frontend
      - backend

networks:
  frontend:
  backend:

⁠Environment Variables

VariableDefaultDescription
REMOTE_HOSTrequiredTarget hostname or IP
REMOTE_PORTrequiredTarget port
LOCAL_PORTsame as REMOTE_PORTPort to listen on
PROTOCOLtcptcp, udp, tcp-to-udp, udp-to-tcp
MAX_CONNECTIONS100Max concurrent connections (TCP)
TIMEOUT3600Connection timeout in seconds
VERBOSEfalseEnable debug logging

⁠Examples

⁠Bridge two Docker networks
services:
  bridge:
    image: zachbg/port-forward:latest
    environment:
      REMOTE_HOST: internal-api
      REMOTE_PORT: 8080
    networks:
      - public
      - internal

  webapp:
    image: myapp
    environment:
      API_URL: http://bridge:8080
    networks:
      - public

  internal-api:
    image: myapi
    networks:
      - internal
⁠Expose remote database locally
services:
  pg-forward:
    image: zachbg/port-forward:latest
    ports:
      - "5432:5432"
    environment:
      REMOTE_HOST: 10.0.1.50
      REMOTE_PORT: 5432
⁠UDP forwarding (DNS, game servers)
services:
  dns-forward:
    image: zachbg/port-forward:latest
    ports:
      - "53:53/udp"
    environment:
      REMOTE_HOST: 8.8.8.8
      REMOTE_PORT: 53
      PROTOCOL: udp
⁠Different local/remote ports
services:
  redis-forward:
    image: zachbg/port-forward:latest
    ports:
      - "16379:16379"
    environment:
      REMOTE_HOST: redis-cluster
      REMOTE_PORT: 6379
      LOCAL_PORT: 16379

Tag summary

Content type

Image

Digest

sha256:e6d038218…

Size

4.4 MB

Last updated

6 months ago

docker pull zachbg/port-forward