npm start 运行我更新的代码,但是 docker 使用过时的代码运行

npm start runs my updated code, but docker runs with a outdated code

是的,这很令人困惑,当我像往常一样使用 npm start 启动我的应用程序时,它启动正常,我可以看到我的机会和更新,但是当我创建一个 docker-compose 文件和一个 docker 文件和 运行 放入 docker 容器中,它 运行 是我的代码的一个非常过时的版本。

我尝试了所有方法来解决这个问题,我不明白 docker 从哪里得到这个甚至不存在于我的机器或项目中的过时代码。我也清理了缓存,我删除了所有图像/容器,但仍然是一样的东西

问题是,docker 在哪里找到这段代码,为什么会找到,为什么 docker 运行 这个代码甚至不存在于我的本地机器或我的代码?为什么他不能 运行 我的代码像 npm start 一样?

我找不到它的问题

此处 docker 文件和 docker 组合文件用于简单的本地 运行

FROM node:12.18.4 as build

WORKDIR /app
COPY package.json /app/package.json
COPY package-lock.json /app/package-lock.json
RUN npm ci
RUN npm i react-toastify

COPY . /app
RUN rm .env
COPY .env.production .env
RUN npm run build

# production environment
FROM nginx:1.17.9-alpine
COPY --from=build /app/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
COPY nginx/decode.crt /etc/nginx/decode.crt
COPY nginx/decodewp.key /etc/nginx/decodewp.key

EXPOSE 80
EXPOSE 443
CMD ["nginx", "-g", "daemon off;"]

--------------------------------------------------

version: "3.6"
services:
    decode.up4biz.frontend:
        build:
            context: .
            dockerfile: Dockerfile
        ports:
            - "4000:80"
            - "4001:443"
        restart: always
        stdin_open: true
        volumes:
           - './:/app'
           - '/app/node_modules'
        environment:
          - CHOKIDAR_USEPOLLING=true

我终于找到了一些东西,我的 docker 文件有问题,我为每个不同的环境创建了每个文件并更改了 nginx 配置。 我以为这只是一个构建问题,但事实并非如此,这只是 docker 的 nginx 不能很好地相互交谈 这是我的docker文件

FROM nginx:stable-alpine
ARG ENV
COPY . /app
WORKDIR /app
COPY package.json /app/package.json
COPY package-lock.json /app/package-lock.json
RUN apk --no-cache add npm
RUN npm install --package-lock
RUN npm i react-toastify
COPY .env.development .env
RUN npm run build-development
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx-development.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

这是解决问题的我的 nginx 配置:

 location / {
    root /app/build;
    index index.html index.htm;
    try_files $uri $uri/ /index.html;
}

解决问题的是这里的这一行

root /app/build;