首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ts-使用docker运行而不是docker组合运行节点应用程序。

ts-使用docker运行而不是docker组合运行节点应用程序。
EN

Stack Overflow用户
提问于 2022-08-26 18:37:04
回答 1查看 41关注 0票数 0

使用此Dockerfile:

代码语言:javascript
复制
FROM node:14-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
代码语言:javascript
复制
docker build -t ts-node-api .    
docker run -it --entrypoint sh --expose 3000 -it ts-node-api

代码语言:javascript
复制
docker run --expose 3000 -it steve/ts-node-api     

工作正常,除了没有连接到数据库之外,这是后面的一个问题。

但是,运行相同的Dockerfile:

代码语言:javascript
复制
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

在以下文件中使用码头组合结果:

代码语言:javascript
复制
 => 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

任何帮助都将不胜感激,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-08-27 00:29:14

你的两个构建设置是不同的。显示的docker build命令等效于

代码语言:javascript
复制
build:
  context: .
  # dockerfile: Dockerfile

它有一个速记

代码语言:javascript
复制
build: .

如果撰写文件位于服务的祖先目录中,那么您可以将cd放入该子目录,然后运行docker build .命令,则需要使用该子目录名作为上下文目录。

代码语言:javascript
复制
build: services/ts-node-api

显示的组合块等效于

代码语言:javascript
复制
docker build -f services/ts-node-api/Dockerfile .

这导致COPY命令相对于树的根而不是包含应用程序的目录进行解释(比较两个context:目录),这就是为什么它不能像预期的那样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73505251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档