Node.js 节点应用程序赢得';如果存在';这是一个共享卷

Node.js 节点应用程序赢得';如果存在';这是一个共享卷,node.js,docker,gatsby,Node.js,Docker,Gatsby,我在本地生成了一个盖茨比网站。然后我设置了一个Docker容器来运行它。这是一个标准设置:复制package.json,安装模块,复制本地文件,并使用共享卷启动开发脚本 但当它启动时,我遇到了一个错误: gatsby_1 | ERROR gatsby_1 | gatsby_1 | There was a problem loading the local develop command. Gatsby may not be installed in your site'

我在本地生成了一个盖茨比网站。然后我设置了一个Docker容器来运行它。这是一个标准设置:复制
package.json
,安装模块,复制本地文件,并使用共享卷启动开发脚本

但当它启动时,我遇到了一个错误:

gatsby_1     |  ERROR
gatsby_1     |
gatsby_1     | There was a problem loading the local develop command. Gatsby may not be installed in your site's "node_modules" directory. Perhaps you need to run "npm install"? You might need to delete your "package-lock.json" as well.
这是
Dockerfile

FROM node:14.11.0

RUN npm install -g gatsby-cli

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 8000
CMD ["gatsby", "develop", "-H", "0.0.0.0"]
docker compose.yml

version: "3"

services:
  db:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./db:/var/lib/mysql

  adminer:
    image: adminer:latest
    ports:
      - 8082:8080

  wordpress:
    image: wordpress:5.5.1-php7.4-apache
    ports:
      - 8081:80
    volumes:
      - ./wordpess/plugins:/var/www/html/wp-content/plugins
      - ./wordpess/themes:/var/www/html/wp-content/themes

  gatsby:
    build: ./gatsby
    ports: 
      - 8080:8000
    volumes:
      - ./gatsby:/app
但是,如果我去掉盖茨比容器的体积,所有的符文都很好

所以我猜权限有问题,但我没办法解决


这里有一个。

是的,
卷:
用本地文件系统的内容覆盖
/app
目录的内容,基本上Dockerfile所做的一切都被完全忽略。您可以安全地删除该块以运行实际内置到映像中的代码。我不确定这是不是一种方法。如果我们只使用buit映像,而在
docker compose.yml
中没有要共享的代码和卷集,那么prodcution部署会怎么样?我必须为prod使用另一个
Dockerfile
just?是的,
卷:
用本地文件系统的内容覆盖
/app
目录的内容,基本上Dockerfile所做的一切都被完全忽略。您可以安全地删除该块以运行实际内置到映像中的代码。我不确定这是不是一种方法。如果我们只使用buit映像,而在
docker compose.yml
中没有要共享的代码和卷集,那么prodcution部署会怎么样?我必须使用另一个
Dockerfile
juste进行prod?