Docker,复制失败 : forbidden path outside the build context

标签 docker docker-compose

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

步骤 7/28:复制 ../../data_acquisition_survey_api/。 错误:服务“web”构建失败:复制失败:构建上下文之外的禁止路径:../../data_acquisition_survey_api/()

我浏览了所有谷歌可用的线程,但没有运气,尝试了 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.dev 如下:

###########
# 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

最佳答案

你就快到了。每当您为 docker 构建定义上下文时,该上下文的目录就会成为 Dockerfile 的基目录。因此,只要有以下类型的路径:

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

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

复制兴趣路径

你应该可以开始了。

关于Docker,复制失败 : forbidden path outside the build context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69974794/

相关文章:

angular - 无法通过Nginx容器从其容器中提供 Angular 应用

laravel - 我想在 Docker 容器中发布 Laravel 应用程序,我应该在 Docker 中使用 Docker 还是使用 docker-compose 来添加所有服务?

mysql - Dockerfile 不从我的 initialize.sql 创建表

docker - 为什么docker容器立即退出

networking - 如何使用 Hyper-V 连接到网络设置上的 docker 服务器

java - 如何修复tomcat9中的 “unsupported class file major version 60”?

amazon-web-services - 是否可以在Yaml中指定AWS ECS的源路径?

python - 如何解决 PyCharm 2022.2.1(专业版)中请求中的本地路径 <path> 未在上传中注册的问题?

docker - 如何使用 docker-compose 在 docker 上安装 gulp

Docker compose服务无法通过服务名称进行通信