美文网首页工作生活
Docker -- Forbidden path outside

Docker -- Forbidden path outside

作者: MrTricker | 来源:发表于2019-07-04 16:56 被阅读0次

    一、问题描述

    因为有一个文件夹,有多个镜像需要使用,所以我把这个文件夹放到与其它模块文件夹同级。

    当我在模块中的 Dockerfile 中这样写的时候:

    COPY ../code/ /var/www/html/
    # or
    ADD ../code/ /var/www/html/
    

    执行 build 就会获得:

    ERROR: Service 'nginx' failed to build: COPY failed: Forbidden path outside the build context: ../code/ ()
    # or
    ERROR: Service 'nginx' failed to build: ADD failed: Forbidden path outside the build context: ../code/ ()
    

    二、解决方法

    1. 第一种方法

    ../code/ 换成绝对路径 ~/Workspace/code/

    这种方法虽然能解决问题,但是并不利于项目的迁移,以及与他人共享我的代码。

    2. 第二种方法

    我管理项目,用的是 Docker Compose。

    Docker 修改成这样:

    COPY ./code/ /var/www/html/
    # or
    ADD ./code/ /var/www/html/
    

    我这样写,一定有人会想,我是不是把这个文件夹放到每个模块的文件夹里了。
    并不是,请继续看下去。

    我还有一个 docker-compose.yml 文件:

    version: '3'
    
    services:
    
      nginx:
        build:
          context: .
          dockerfile: ./nginx/Dockerfile
    
      ...
    
      php-fpm:
        build:
          context: .
          dockerfile: ./fpm/Dockerfile
    

    通过 docker-compose.yml 中的设置,把根文件夹和 Dockerfile 分离开来。
    就是相当于把 Dockerfile 复制到根目录,在构建镜像。

    这种方法,对我来说,算是一个比较合理的解决方法,比第一种方法要好很多。

    相关文章

      网友评论

        本文标题:Docker -- Forbidden path outside

        本文链接:https://www.haomeiwen.com/subject/fyvrhctx.html