docker - 复制失败:构建上下文之外的禁止路径 docker compose
问题描述
这是项目结构
Project
/deployment
/Dockerfile
/docker-compose.yml
/services
/ui
/widget
这是码头文件
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
和码头工人撰写
版本:“3.4”
x-env: &env
HOST: 127.0.0.1
services:
widget:
build:
dockerfile: Dockerfile
context: .
ports:
- 3002:3002
command:
npm start
environment:
<<: *env
restart: always
并从中project/deplyment/docker-compose up
显示
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/ ()
我设置了错误的上下文吗?
解决方案
您不能COPY
或ADD
文件存在于当前路径之外Dockerfile
。
您应该将这两个目录移动到 where Dockerfile
is 然后更改Dockerfile
为:
COPY ./services/ui/widget/ /app/
COPY ./.env /app/
或使用volumes
in docker-compose
,并删除两COPY
行。
所以,你docker-compose
应该是这样的:
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/
这应该是您的Dockerfile if you use
卷in
docker-compose`:
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
推荐阅读
- php - 为卡片 php 进行分页
- amazon-web-services - 如何在 CloudFormation 中获取 SSM 文档的 ARN?
- react-native - 评估项目“:@react-native-firebase_auth”时出现问题
- ios - 根据 Model 类获取 CoreData 实体,而不是创建单独的 NSManaged 子类
- python - 创建随机数据库并将其从 numpy 转换为 pandas
- javascript - 如果产品在购物车中,字形图标颜色会发生变化
- pdf - 如何为PDF中的每个方程设置方程编号
- google-chrome - 默认浏览器检测
- angular - 错误:cmd:命令失败,退出代码为 1 错误输出:NPE
- blockchain - 在使用 Proof of Stake 时,为什么区块头需要由矿工签名?