当前位置: 首页 > 知识库问答 >
问题:

复制失败:生成上下文docker组合[重复]之外的禁止路径

司英飙
2023-03-14

这是项目结构

Project
 /deployment
   /Dockerfile
   /docker-compose.yml
 /services
   /ui
     /widget

这是docker文件

FROM node:14

WORKDIR /app

USER root

# create new user (only root can do this) and assign owenership to newly created user
RUN echo "$(date '+%Y-%m-%d %H:%M:%S'): ======> Setup Appusr" \
    && groupadd -g 1001 appusr \
    && useradd -r -u 1001 -g appusr appusr \
    && mkdir /home/appusr/ \
    && chown -R appusr:appusr /home/appusr/\
    && chown -R appusr:appusr /app

# switch to new created user so that appuser will be responsible for all files and has access
USER appusr:appusr

COPY ../services/ui/widget/ /app/
COPY ../.env /app/

# installing deps
RUN npm install 
x-env: &env
  HOST: 127.0.0.1

services:
  widget:
    build:
      dockerfile: Dockerfile
      context: .
    ports:
      - 3002:3002
    command:
      npm start
    environment:
      <<: *env
    restart: always
Step 6/8 : COPY ../services/ui/widget/ /app/
ERROR: Service 'widget' failed to build : COPY failed: forbidden path outside the build context: ../services/ui/widget/ ()

共有1个答案

韦望
2023-03-14

不能在存在DockerFile的当前路径之外复制添加文件。

您应该将这两个目录移动到dockerfile所在的位置,然后将dockerfile更改为:

COPY ./services/ui/widget/ /app/
COPY ./.env /app/

或者在docker-compose中使用volumes,并删除两行copy

x-env: &env
  HOST: 127.0.0.1

services:
  widget:
    build:
      dockerfile: Dockerfile
      context: .
    ports:
      - 3002:3002
    command:
      npm start
    environment:
      <<: *env
    restart: always
    volumes:
      - /absolute/path/to/services/ui/widget/:/app/
      - /absolute/path/to/.env/:/app/

如果在docker-compose`中使用volumes,这应该是您的dockerfile:

FROM node:14

WORKDIR /app

USER root

# create new user (only root can do this) and assign owenership to newly created user
RUN echo "$(date '+%Y-%m-%d %H:%M:%S'): ======> Setup Appusr" \
    && groupadd -g 1001 appusr \
    && useradd -r -u 1001 -g appusr appusr \
    && mkdir /home/appusr/ \
    && chown -R appusr:appusr /home/appusr/\
    && chown -R appusr:appusr /app

# switch to new created user so that appuser will be responsible for all files and has access
USER appusr:appusr

# installing deps
RUN npm install 

 类似资料:
  • 我有一个包含各种Go服务和库的monorepo。目录结构如下所示: 这<代码>开始。mod文件位于monorepo目录的根目录中,服务使用该文件中声明的依赖项。 我使用以下命令构建Docker图像: 当我尝试使用上述Docker命令从monorepo目录的根构建Docker图像时,我得到以下错误: 复制失败:生成上下文之外的禁止路径:/去mod() 下面是我的Dockerfile 我需要做些什么才

  • 我的本地服务器上有一个工作的Docker Compose,现在我必须转到prod,我只是复制了prod服务器上的整个目录,相同的目录结构、配置文件等。但是当我运行Docker Compose命令(Docker-Compose-f Docker-Compose.dev.yml up)时,它抛出了以下错误: 步骤 7/28 : 复制 ../../data_acquisition_survey_api/

  • 我有以下文件夹结构: 我有我的micro-hr文件夹,其中是我的主包,我有一个本地lib,它是rabbitmq 这是我的dockerfile: docker撰写: 这是我的包裹。我的主包后端/微hr上的json: 我不知道我错在哪里,基本上我在我的主包中使用npm链接链接到我的lib,并尝试在docker中创建文件夹,但无济于事。 docker构建错误: 步骤6/10:复制/rabbitmq/包。

  • 我一直在尝试调试这个错误,但没有成功。 本质上,我是通过我的应用程序联系外部应用程序的。连接建立良好,应用程序通过回调URL联系回我的应用程序,然后我需要向外部应用程序发送最终验证。最后一步由于SSLhandshajee异常而失败。 javax。网ssl。例外:太阳。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。certpath。SunCertPath

  • 我有一个包含多个项目的解决方案。我想创建一个项目的docker映像,所以我通过docker支持添加了一个Dockerfile。我添加Dockerfile的项目对同一级别的其他项目具有构建依赖关系。当我尝试通过Docker运行项目时,我收到以下错误: 复制失败:生成上下文之外的禁止路径:/应用程序编程接口。常见的AspNetCore/API。常见的AspNetCore。csproj() C: \用户

  • 我是Docker的新手,同时运行Docker文件**我的Docker文件** 来自Microsoft/DotNet:2.2.0-Preview1-AspNetCore-Runtime作为基础 工作目录/app 来自Microsoft/DotNet:2.2.100-Preview1-SDK AS Build workdir/dineshvisualstudio/autofac-interceptor