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

标签 docker docker-build

由于我的项目结构,我面临着大型 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/

    相关文章:

    github - Dockerhub 使用 Github LFS 自动构建

    docker - 如何为Docker Swarm Manager配置DNS(和/或负载平衡)

    docker - 无法登录到 Docker 帐户

    docker - Docker构建(MacOS与Ubuntu)

    Docker - 无法准备上下文 : unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx

    docker build - 避免添加仅在构建时需要的文件

    node.js - 来自守护程序 : driver failed programming external connectivity on endpoint modest_aryabhata 的错误响应

    java - 提供 tomcat-users.xml 时,Tomcat 镜像不会在 Docker 上启动

    docker - 构建 Docker 镜像的 RUN 指令

    github - 如何在 github-action 中缓存 docker-compose 构建