docker build - 使用容器网络

docker build - 使用容器网络

我有一台 Windows 10 主机,使用 docker 桌面 4.6.1。我有一个docker-compose.yml包含两个服务 vpn 和 app 的。我想要实现的是,docker 的构建过程已经使用了 vpn 容器网络连接。

version: "3.8"
services:
  vpn:
    ...
  app:
    ...
    network_mode: service:vpn

应用程序容器本身正确使用了 vpn 容器连接,我可以通过测试来验证这一点。但构建过程似乎使用了主机网络。Dockers build 命令有一个network或者networkmode允许使用特定容器网络的参数。但它给出了一个错误:

docker-compose.yml

version: "3.8"
services:
  vpn:
    ...
  app:
    build:
      network: container:vpn
    network_mode: service:vpn

docker compose up -d

buildkit 不支持网络模式“container:vpn”。您可以使用 buildx create 中的网络驱动程序选项为您的构建器定义自定义网络。

我如何在我的示例中使用 buildx?我对讨论上下文和端点的文档感到非常困惑。

答案1

1.)将这两项服务拆分为两个单独的撰写文件

docker-compose-vpn.yml

version: "3.8"
services:
  vpn:
    ...

docker-compose-app.yml

version: "3.8"
services:
  app:
    image: username:app
    container_name: app
    depends_on:
      - vpn
    network_mode: container:vpn

2.) 创建并启动 vpn 容器

docker compose -f docker-compose-vpn.yml up -d

3.) 创建一个新的 VPN 构建器实例

docker buildx create --name vpn-builder --driver docker-container --driver-opt network=container:vpn --use

4.) 使用您的 buildx vpn 实例创建图像并将其发布(--load)到 docker。

docker buildx b -f Dockerfile-app --load --no-cache --tag username:app .

5.)启动新的应用容器

docker compose -f docker-compose-app.yml up -d

相关内容