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构建所有图像。

    https://stackoverflow.com/questions/57740571/

    相关文章:

    opengl - setOpenGlDrawCallback如何调整OpenCV窗口的大小

    android - opencv,链接C静态库../lib/armeabi-v7a/liblibjp

    .net - 如何在图表控件中显示EMGU直方图?

    python - 使用simplecv在多个窗口中显示视频

    opencv - 分配像素值的安全方法

    python - typeerror参数 'image'必须为iplimage

    opencv - 查看仿射变换的结果

    python - openCV的特征脸

    opencv - SiftFeatureDetector()和Ptr

    opencv - 我在哪里可以找到与OpenCV一起使用的面部基准点