npm 为什么我的Docker compose不工作?缺少启动脚本?

mpgws1up  于 2023-03-23  发布在  Docker
关注(0)|答案(1)|浏览(181)

我在设置一个docker-compose文件时遇到了一个奇怪的错误。我想在一个docker容器中运行我的svelte-kit应用程序。我有一个这样的Dockerfile:

FROM node:alpine3.17

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

COPY . .

RUN npm run build

ENV PORT=3000
EXPOSE 3000
CMD ["npm", "run", "start"]

像这样构建图像:docker build -t my-app:latest。我也可以这样运行它:docker run -d -p 3000:3000 --name my-app my-app:latest
但是使用这个docker-compose.yml:

version: '3.9'

services:
  pyron:
    build: Dockerfile
    ports:
      - "3000:3000"

给了我这个错误:

npm ERR! Missing script: "start"
npm ERR! 
npm ERR! Did you mean one of these?
npm ERR!     npm star # Mark your favorite packages
npm ERR!     npm stars # View packages marked as favorites
npm ERR!
npm ERR! To see a list of scripts, run:
npm ERR!   npm run

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2023-03-22T22_53_26_633Z-debug-0.log

但是我的package.json有一个开始脚本:

"scripts": {
        "dev": "vite dev",
        "build": "vite build",
        "start": "node build",
        "preview": "vite preview",
        "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
        "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
        "lint": "prettier --plugin-search-dir . --check .",
        "format": "prettier --plugin-search-dir . --write ."
    },

我错过了什么?非常感谢!

erhoui1w

erhoui1w1#

你可以试试下面的代码,可以测试吗

version: '3.9'

services:
  pyron:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"

指定生成时:如果你的docker-compose.yml文件中有一个Dockerfile,它会在docker-compose.yml文件所在的目录中寻找一个Dockerfile。但是,在这种情况下,你的Dockerfile位于当前目录中。

相关问题