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

Docker,复制失败:构建上下文外的禁止路径[重复]

鄢朝斑
2023-03-14

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

步骤 7/28 : 复制 ../../data_acquisition_survey_api/ .错误:服务“Web”无法生成:COPY 失败:生成上下文之外的禁止路径:.。/../data_acquisition_survey_api/ ()

我浏览了所有可用的Google线程,但没有运气,尝试了Docker构建,Docker上下文等......但没有什么工作,任何建议?

谢谢

文件夹结构:

server/docker/api
server/docker/db
server/docker/nginx

server/docker-compose.dev.yml文件详细信息:

version: '3.7'

services:
  web:
    build:
      context: .
    dockerfile: docker/api/Dockerfile.dev
    command: gunicorn data_acquisition_survey_api.wsgi:application --bind 0.0.0.0:8000 --reload
    expose:
      - 8000
    volumes:
      - .:/home/server/web
    env_file:
      - docker/api/.env
    depends_on:
      - db
  db:
    build:
      context: ./docker/db
      dockerfile: Dockerfile
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    env_file:
      - docker/db/.env
    environment:
      - "POSTGRES_INITDB_ARGS=-E UTF8"
  nginx:
    build:
      context: ./docker/nginx
      dockerfile: Dockerfile.dev
    ports:
      - 80:80
    depends_on:
      - web
    environment:
      TZ: Europe/Paris

volumes:
  postgres_data:

server/docker/api/Dockerfile。开发如下:

###########
# BUILDER #
###########

# pull official base image
FROM python:3.7-slim-buster as builder

# set work directory
WORKDIR /usr/src/server

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install psycopg2 dependencies
RUN apt-get update \
    && apt-get -y install postgresql-server-dev-all gcc python3-dev musl-dev

# lint
RUN pip install --upgrade pip
COPY ../../data_acquisition_survey_api/ .
COPY ../../manage.py .

# install dependencies
COPY ../../docker/api/requirements.txt .
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/server/wheels -r requirements.txt


#########
# FINAL #
#########

# pull official base image
FROM python:3.7-slim-buster

# create directory for the app user
RUN mkdir -p /home/server

# create the app user
RUN adduser --system --group server

# create the appropriate directories
ENV HOME=/home/server
ENV APP_HOME=/home/server/web
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

# install dependencies
RUN apt-get update && apt-get -y install libpq-dev
RUN apt install -y netcat

COPY --from=builder /usr/src/server/wheels /wheels
COPY --from=builder /usr/src/server/requirements.txt .
RUN pip install --no-cache /wheels/*

COPY ../../docker/api/entrypoint.sh $APP_HOME
RUN chmod +x $APP_HOME/entrypoint.sh

# copy project
COPY . $APP_HOME

# chown all the files to the app user
RUN chown -R server:server $APP_HOME

# change to the app user
USER server

共有1个答案

杨雪松
2023-03-14

你就快到了。每当您为docker构建定义一个上下文时,该上下文的目录就会成为docker文件的基本目录。所以,只要你有一条这样的路径:

复制。。/../path/of/interest

在Dockerfile中,您应该删除相对的父目录路径:

复制路径/of/interest

你应该很好去。

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

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

  • 我已经研究了可能的原因,并按照以下步骤创建了一个包含外部应用程序证书的truststore: 从浏览器下载证书链 使用创建truststore keytool-import-v-trustcacerts-alias mycert-file x_my_cert_location_x-keystore truststore null 在SSL调试中,我可以看到: 对我来说毫无意义。我的应用程序在Jav

  • 我使用以下命令创建了CSR请求: openssl请求-out CertificateCsr.csr-new-newkey rsa:2048-keyout CertificateKey.key 之后,CA将与我共享证书(.cer)文件。 在此之后,我使用key将.cer文件转换为.p12。 使用CA发送的cer和私钥创建.p12证书 C:\Java\jdk1.6.0_38\jre\bin>opens

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