我刚从码头开始,我正在从我的代码创建码头形象。以下是dir结构
project
/deployment
/Dockerfile.project1
/services
/ui
/project1
下面是Dockerfile.project1
中的代码
FROM node:14
# arguments
ARG BUILD_COMMIT
ARG BUILD_BRANCH
ARG BUILD_TAG
# port number for app
ARG PORT=3000
ARG APP=adam_website_ui
LABEL build.tag=${BUILD_TAG}
LABEL app=${APP}
# set the env
ENV BUILD_BRANCH=${BUILD_BRANCH}
ENV BUILD_COMMIT=${BUILD_COMMIT}
WORKDIR /app
# Assiging user
USER root
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
# copy the relavant code
COPY ../services/ui/project1 /app/
# installing deps
RUN npm install
RUN npm run build
RUN SET PORT=${PORT} && npm start
USER appusr:appusr
但这表明
=> ERROR [4/7] COPY ../services/ui/project1 /app/ 0.0s
------
> [4/7] COPY ../services/ui/project1 /app/:
------
failed to compute cache key: "/services/ui/project1" not found: not found
我正在使用deployment
文件夹中的这个命令构建
docker build -t website_ui -f Dockerfile.project1 .
有什么问题吗?
发布于 2021-10-11 00:47:04
如果您使用生成上下文project/deployment
在目录.
中运行停靠构建,那么docker就无法在project/services
中找到文件。
尝试运行docker build -t website_ui -f deployment/Dockerfile.project1 .
(最后一个参数是构建上下文)
从医生那里:
-- Dockerfile命令从Dockerfile和一个“上下文”构建docker映像。构建的上下文是位于指定的
PATH
或URL
.
中的一组文件。
发布于 2021-10-11 01:17:12
在构建Docker映像时,必须指定指向目录的路径,该路径将是build context,这是docker build
命令末尾的点。然后,Docker将复制该目录的内容(可能会复制到内部Docker目录),这就是为什么不能在上下文之外COPY
路径的原因。
运行
docker build
时,您应该会看到一条类似于“上载X字节上下文”的消息。
将COPY
指令更改为COPY services/ui/project1 /app/
,并从项目的根目录构建映像:
docker build -t website_ui -f deployment/Dockerfile.project1 .
了解有关docker build
documentation上构建上下文的更多信息
https://stackoverflow.com/questions/69523230
复制相似问题