【问题标题】:Unable to COPY config file in nginix /etc/nginx/conf.d/default.conf无法复制 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 都在同一个目录下。

标签: javascript reactjs docker nginx config


【解决方案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;"]

【讨论】:

    猜你喜欢
    • 2018-08-15
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    相关资源
    最近更新 更多