Docker 撰写 - 限制互联网访问,仅允许通过代理出口

Docker compose - restrict internet access, allow egress only through proxy

我正在尝试使用 Docker compose 在本地开发环境中复制受限的生产环境。

应用程序容器不应该能够从内部访问互联网。其中一个容器应能够将其 Web 端口暴露给主机。主机应能够访问该 Web 服务。

应用程序容器应能够到达代理服务器,例如3128端口。代理容器应该能够访问互联网。

是否可以使用 Docker compose 进行设置?

其实这是可以的。 Ingress (NginX) 和 egress (Squid) 容器需要在内部和外部网络中,而应用程序容器只在内部网络中。

# Base docker-compose, which is extended by more specific docker-compose files
version: "3.5"
services:
  appname-nginx:
    image: companyimage/nginx
    container_name: appname-nginx
    depends_on:
      - appname-web
    ports:
      - "127.0.0.1:443:443"
      - "127.0.0.1:80:80"
    networks:
      appname-network:
        aliases:
          - local.appname.com
      appname-external-network:
  appname-web:
    image: companyimage/web
    container_name: appname-web
    networks:
      - appname-network
  appname-outbound-proxy-squid:
    image: companyimage/squid
    container_name: appname-outbound-proxy-squid
    networks:
      - appname-external-network
      - appname-network
networks:
  appname-network:
    name: appname-network
    internal: true
  appname-external-network:
    name: appname-external-network