无法复制 nginix /etc/nginx/conf.d/default.conf 中的配置文件
Posted
技术标签:
【中文标题】无法复制 nginix /etc/nginx/conf.d/default.conf 中的配置文件【英文标题】:Unable to COPY config file in nginix /etc/nginx/conf.d/default.conf 【发布时间】:2019-11-14 09:41:20 【问题描述】:无法将我的项目目录中的配置文件复制到 /etc/nginx/conf.d/default.conf
源文件位置: /app/nginix.conf
COPY nginx.conf /etc/nginx/conf.d/default.conf
目标:/etc/nginx/conf.d/default.conf
docker 文件中的步骤:
Tried the multi stage build:
- FROM node:8.9.0 as buid
- WORKDIR /app
- COPY package.json package-lock.json ./
- RUN npm install
- COPY . ./
- RUN npm run build
- FROM nginx:alpine
- RUN mkdir -p /var/www/html/client
- COPY --from=buid /app/nginix.conf /etc/nginx/conf.d/default.conf
- COPY --from=buid /app/build/ /var/www/html/client
尝试注释第一个复制命令,它能够复制构建并且很好。 当它能够在应用程序目录中找到构建时,为什么它无法找到也在同一目录中的 nginix.conf 文件,执行 ls -la 并看到了 nginix.conf 文件。
TIA
【问题讨论】:
在您的本地系统上,nginx.conf
是否与您的 Dockerfile
在同一目录中?
是的,Docker 文件和 nginix.conf 都在同一个目录下。
【参考方案1】:
如果源文件路径是/app/nginix.conf
,那么dockefile应该包含:
COPY /app/nginx.conf /etc/nginx/conf.d/default.conf
如果您从主机上的/app
目录运行docker build
命令,那么您上面的 dockerfile 应该可以工作。
更新:
如果您希望 node
docker 映像的 /app/nginx.conf 文件出现在 nginx:alpine
映像中,那么您需要使用 multi-stage docker builds。
将您的 dockerfile
更改为
FROM node as build
WORKDIR /app
COPY package json files
RUN npm build
FROM nginx:alpine
COPY --from=build /app/nginx.conf /etc/nginx/conf.d/default.conf
这会将/app/nginx.conf
文件从node
图像复制到nginx:alpine
图像。
【讨论】:
我也试过了:复制失败:stat /var/lib/docker/tmp/docker-builder-number/app/nginx.conf:没有这样的文件或目录。达到这一点后: FROM nginix:alpine 目录正在改变,我无法弄清楚。 你能解释一下,你得到了什么输出。 - FROM node - WORKDIR /app - COPY package json files - RUN npn build 我试过 pwd 和 ls -la,我可以看到我所有的项目文件和我的配置文件 FROM nginix:alpine not确定在此之后发生了什么。 该 nginx.conf 文件是否在 /app 文件夹中的 FROM 节点映像中创建,而您希望在 FROM nginx:alpine 映像中创建该文件。 我想要 /app 文件夹中的那个,但是当我从 nginx:alpine 执行时,root 正在更改并且无法找到 nginix.conf 文件。【参考方案2】:如果有人还在为此苦苦挣扎......
将 WORKDIR 从 app 更改为 builddir 有效!
FROM node:alpine as builder
WORKDIR '/builddir'
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /builddir/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
【讨论】:
以上是关于无法复制 nginix /etc/nginx/conf.d/default.conf 中的配置文件的主要内容,如果未能解决你的问题,请参考以下文章