Skip to content

Instantly share code, notes, and snippets.

@wellic
Last active August 4, 2023 09:59
Show Gist options
  • Save wellic/7f287c73d1a4442c0adb488961a9b6eb to your computer and use it in GitHub Desktop.
Save wellic/7f287c73d1a4442c0adb488961a9b6eb to your computer and use it in GitHub Desktop.
httpx proxy to *.docker

Details:

  1. https://github.com/nginx-proxy/nginx-proxy
  2. https://github.com/nginxproxy/nginx-proxy
  3. https://github.com/nginx-proxy/nginx-proxy/wiki/Docker-Compose-Example
  4. https://github.com/speto/docker-db-tunnel
  5. https://github.com/codekitchen/dinghy-http-proxy

Helper:

Other solutions:

  • case 1: hard coded IP
services:

  db:
    image: mysql:latest
    container_name: db
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: true
    networks:
      default:
        ipv4_address: 10.10.10.250

  web:
    image: node:latest
    container_name: web
    depends_on:
      - nginx-proxy
    extra_hosts:
      - "db:10.10.10.250"

networks:
  default:
    ipam:
      config:
        - subnet: 10.10.10.0/24
          gateway: 10.10.10.1

add to /etc/hosts

10.10.10.250 db.docker
  • case 2: nginx-proxy :
services:
  nginx-proxy:
    image: nginxproxy/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  db:
    image: mysql:latest
    container_name: db
    depends_on:
      - nginx-proxy
    environment:
      VIRTUAL_HOST: db.docker
      VIRTUAL_PORT: 3306

  web:
    image: node:latest
    container_name: web
    depends_on:
      - nginx-proxy
    environment:
      VIRTUAL_HOST: web.docker
      VIRTUAL_PORT: 3000

add to /etc/hosts

$ IP=$(docker inspect db -f json | jq -r '.[].NetworkSettings.Networks[].IPAddress' | sort | head -1)
$ echo "$IP db.docker" >> /etc/hosts
$ echo "127.0.0.1 web.docker" >> /etc/hosts
  • case 3: combined
  1. https://github.com/nginx-proxy/nginx-proxy/wiki/Docker-Compose-Example
  2. https://github.com/speto/docker-db-tunnel
version: '2'
services:
http-proxy:
image: nginxproxy/nginx-proxy
container_name: http-proxy
privileged: true
environment:
# - DNS_IP=127.0.0.1
- CONTAINER_NAME=http-proxy
ports:
- "80:80"
# - "443:443"
# - "19322:19322/udp"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
whoami:
image: jwilder/whoami
expose:
- "8000"
environment:
- VIRTUAL_HOST=whoami.docker
- VIRTUAL_PORT=8000
@wellic
Copy link
Author

wellic commented Aug 4, 2023

  • case 1: hard coded IP
services:

  db:
    image: mysql:latest
    container_name: db
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: true
    networks:
      default:
        ipv4_address: 10.10.10.250

  web:
    image: node:latest
    container_name: web
    depends_on:
      - nginx-proxy
    extra_hosts:
      - "db:10.10.10.250"

networks:
  default:
    ipam:
      config:
        - subnet: 10.10.10.0/24
          gateway: 10.10.10.1

add to /etc/hosts

10.10.10.250 db.docker
  • case 2: nginx-proxy :
services:
  nginx-proxy:
    image: nginxproxy/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  db:
    image: mysql:latest
    container_name: db
    depends_on:
      - nginx-proxy
    environment:
      VIRTUAL_HOST: db.docker
      VIRTUAL_PORT: 3306

  web:
    image: node:latest
    container_name: web
    depends_on:
      - nginx-proxy
    environment:
      VIRTUAL_HOST: web.docker
      VIRTUAL_PORT: 3000

add to /etc/hosts

$ IP=$(docker inspect db -f json | jq -r '.[].NetworkSettings.Networks[].IPAddress' | sort | head -1)
$ echo "$IP db.docker" >> /etc/hosts
$ echo "127.0.0.1 web.docker" >> /etc/hosts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment