使用此Dockerfile:
FROM node:14-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]docker build -t ts-node-api .
docker run -it --entrypoint sh --expose 3000 -it ts-node-api或
docker run --expose 3000 -it steve/ts-node-api 工作正常,除了没有连接到数据库之外,这是后面的一个问题。
但是,运行相同的Dockerfile:
version: "3"
services:
mongo:
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
ts-node-api:
depends_on:
- mongo
build:
context: .
dockerfile: services/ts-node-api/Dockerfile
ports:
- 3000:3000在以下文件中使用码头组合结果:
=> ERROR [6/6] RUN npm run build 0.3s
------
> [6/6] RUN npm run build:
#9 0.244 npm ERR! code ENOENT
#9 0.244 npm ERR! syscall open
#9 0.244 npm ERR! path /usr/src/app/package.json
#9 0.245 npm ERR! errno -2
#9 0.246 npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
#9 0.246 npm ERR! enoent This is related to npm not being able to find a file.
#9 0.246 npm ERR! enoent
#9 0.248
#9 0.249 npm ERR! A complete log of this run can be found in:
#9 0.249 npm ERR! /root/.npm/_logs/2022-08-26T18_29_26_477Z-debug.log任何帮助都将不胜感激,谢谢。
发布于 2022-08-27 00:29:14
你的两个构建设置是不同的。显示的docker build命令等效于
build:
context: .
# dockerfile: Dockerfile它有一个速记
build: .如果撰写文件位于服务的祖先目录中,那么您可以将cd放入该子目录,然后运行docker build .命令,则需要使用该子目录名作为上下文目录。
build: services/ts-node-api显示的组合块等效于
docker build -f services/ts-node-api/Dockerfile .这导致COPY命令相对于树的根而不是包含应用程序的目录进行解释(比较两个context:目录),这就是为什么它不能像预期的那样工作。
https://stackoverflow.com/questions/73505251
复制相似问题