工作生活

Docker -- Forbidden path outside

2019-07-04  本文已影响0人  MrTricker

一、问题描述

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

当我在模块中的 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 复制到根目录,在构建镜像。

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

上一篇 下一篇

猜你喜欢

热点阅读