node.js - Docker镜像与docker run配合使用,但不适用于docker-compose up

标签 node.js docker docker-compose gatsby

我有一个gatsby docker镜像,使用docker run运行时可以按预期工作,但是当我使用docker-compose up运行它时,出现以下错误:

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:12-buster

RUN npm install --global gatsby-cli && gatsby telemetry --disable

WORKDIR /app

COPY package*.json /app/

RUN npm install --force

COPY . .

EXPOSE 8000

CMD ["npm", "run", "develop"]

撰写文件如下所示:
   frontend:
    build: frontend
    image: frontend
    volumes:
      - ./frontend:/app
    ports:
      - "8000:8000"
    depends_on:
      - backend

最佳答案

当代码在build上下文中时,该镜像将正常工作,因为所有RUN命令都将在docker build镜像过程中执行。

当您像在docker-compose上一样实例化镜像时,您未在运行:

RUN npm install --force

因为它是在构建镜像期间执行的。在发射容器期间没有。

因此,要解决您的问题并考虑如何构建镜像,则无需包括卷,而应将代码作为构建上下文。
version: "3.7"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile

https://docs.docker.com/compose/compose-file/

关于node.js - Docker镜像与docker run配合使用,但不适用于docker-compose up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60465367/

相关文章:

docker-compose 另一个 docker-compose 的链接容器

node.js - 如何避免与 ORACLEDB 的连接中断? Nodejs

ajax - 如何使用 Node.js 服务器接收 http 请求,然后将该请求传递给另一台服务器?

html - 脚本未被调用

linux - 我在哪里可以为 Docker 容器配置启动用户 UID?

python - 在 docker 环境中 pip install git+url

node.js - 与普通 Node.JS 相比,Express 有什么好处?

caching - Travis CI 可以缓存 docker 图像吗?

Docker-compose 卷不复制任何文件

docker-compose - 如何设置Prometheus的node-exporter