gpt4 book ai didi

docker - 如何忽略要在 docker build 上下文中发送的文件夹

转载 作者:行者123 更新时间:2023-12-02 17:15:06 35 4
gpt4 key购买 nike

由于我的项目结构,我面临着大型 docker 构建上下文的问题。在我的根目录中,我有用于公共(public)代码的 lib 文件夹和微服务文件夹。现在我想为 miscroservice1 构建只包含 lib 文件夹并忽略其他微服务。

我在根文件夹中运行 docker build 命令,因为在微服务文件夹中运行命令会在构建上下文之外给出错误 Forbidden path

rootFolder
-- lib
-- microservice1/Dockerfile
-- microservice2/Dockerfile
-- microservice3/Dockerfile

我有两种解决方案,但暂时没有尝试
  • 在我的微服务文件夹
  • 中为 lib 添加符号链接(symbolic link)
  • 为每个 docker build 编写脚本以在特定的微服务文件夹中添加 lib 文件夹,然后运行 ​​docker build。

  • 我正在尝试上述两种解决方案。任何人都可以提出任何最佳做法吗?

    最佳答案

    您可以创建.dockerignore在您的根目录中并添加

    microservice1/
    microservice2/
    microservice3/
    给它,就像 .gitignore在跟踪文件期间,docker 将在构建期间忽略这些文件夹/文件。
    更新
    您可以包括 docker-compose.yml根目录下的文件,查看 docker-compose对于所有选项,例如设置 environment ,运行特定命令等,您可以在构建过程中使用。
    version: "3"
    services:
    microservice1:
    build:
    context: .
    dockerfile: ./microservice1/Dockerfile
    volumes:
    - "./path/to/share:/path/to/mount/on/container"
    ports:
    - "<host>:<container>"
    links:
    - rootservice # defines a dns record in /etc/hosts to point to rootservice
    microservice2:
    build:
    context: .
    dockerfile: ./microservice2/Dockerfile
    volumes:
    - "./path/to/share:/path/to/mount/on/container"
    ports:
    - "<host>:<container>"
    links:
    - rootservice # defines a dns record in /etc/hosts to point to rootservice
    - microservice1
    rootservice:
    build:
    context: .
    dockerfile: ./Dockerfile
    volumes:
    - "./path/to/share:/path/to/mount/on/container"
    ports:
    - "<host>:<container>"
    depends_on:
    - microservice1
    - microservice2
    ports:
    - "<host1>:<container1>"
    - "<host2>:<container2>"
    这将是您的 microservices 的构建配方,您现在可以运行 docker-compose build构建所有图像。

    关于docker - 如何忽略要在 docker build 上下文中发送的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740571/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com