cmj2002 / warp-docker

Run Cloudflare WARP in Docker.
GNU General Public License v3.0
316 stars 101 forks source link

在docker-compose中,别的应用该怎样设置socks代理呢 #5

Closed zhuxindong closed 1 year ago

zhuxindong commented 1 year ago
version: '3'

services:
  ninja:
    image: zhuxindong/ninja:latest
    container_name: ninja
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
      - PROXIES=socks5://127.0.0.1:10801
      # - CONFIG=/serve.toml
      # - PORT=8080
      # - HOST=0.0.0.0
      # - TLS_CERT=
      # - TLS_KEY=
    # volumes:
      # - ${PWD}/ssl:/etc
      # - ${PWD}/serve.toml:/serve.toml
    command: serve run
    ports:
      - "8080:7999"
    depends_on:
      - warp

  warp:
    image: caomingjun/warp
    container_name: warp
    restart: always
    ports:
      - '10801:1080'
    environment:
      - WARP_SLEEP=2
      - WARP_LICENSE_KEY=
    cap_add:
      - NET_ADMIN
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv4.conf.all.src_valid_mark=1
    volumes:
      - ./data:/var/lib/cloudflare-warp

我的另一个容器设置- PROXIES=socks5://127.0.0.1:10801 是否正确?还是说设置成 - PROXIES=socks5://warp:10801

cmj2002 commented 1 year ago

据我所知,除了通过类似于软路由的方案进行透明代理,应该不存在一种通用的为容器设置代理的方法。一般为容器设置代理需要容器本身支持,例如容器内运行的应用可能可以接受特定环境变量来设置代理。对于软路由的方案,我并不具有这样的技术,这也远远超出了本项目的范围。

zhuxindong commented 1 year ago

大佬你理解错了,我的意思是在同一个docker-compose文件内,可以直接用service名字的缩写来访问对应的容器,所以实测,改成- PROXIES=socks5://warp:1080 就好啦

cmj2002 commented 1 year ago

哦你是这个意思啊。不过你的理解也不是完全正确,实际上是在同一个 Docker bridge 类型网络内,可以通过 container name 来访问对应容器,只是这里 service name 刚好等于 container name。而且只要是在同一个 bridge network 下即可,要跨 docker-compose 文件也是可以访问的。