node.js - 如何在 Dockerfile 中编译 typescript

标签 node.js typescript docker

我在从 Dockerfile 编译我的 nodejs typescript 应用程序时遇到问题。当我构建我的 docker 镜像时,检查它完全缺少 dist 文件夹。

docker 文件:

# Template: Node.js dockerfile
# Description: Include this file in the root of the application to build a docker image.

# Enter which node build should be used. E.g.: node:argon 
FROM node:latest

# Create app directory for the docker image
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app/dist

# Install app dependencies from package.json. If modules are not included in the package.json file enter a RUN command. E.g. RUN npm install <module-name>
COPY package.json /usr/src/app/
RUN     npm install
RUN     npm install tsc -g
RUN     tsc

# Bundle app source
COPY . /usr/src/app

# Enter the command which should be used when the image starts up. E.g. CMD ["node", "app.js"]
CMD [ "node", "server.js"]

当我在本地运行图像并使用 ls 显示文件/文件夹时:

# ls
node_modules  package-lock.json  package.json  src

对我哪里出错有什么建议吗?

最佳答案

据我所知,
WORKDIR 不必由您自己创建。 这是 documentation for WORKDIR .

之后您不必手动复制到特定文件夹, 因为在 WORKDIR 命令之后,复制命令会为您复制文件。

因此我建议您使用以下 Dockerfile:

    FROM node:alpine
    WORKDIR /usr/yourapplication-name
    COPY package.json .
    RUN npm install\
        && npm install typescript -g
    COPY . .
    RUN tsc
    CMD ["node", "./dist/server.js"]

小提示:我会在我的 package.json 中使用 typescript 作为依赖项,然后只使用以下文件:

    FROM node:alpine
    WORKDIR /usr/yourapplication-name
    COPY package.json .
    RUN npm install
    COPY . .
    RUN tsc
    CMD ["node", "./dist/server.js"]

关于node.js - 如何在 Dockerfile 中编译 typescript ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51083134/

相关文章:

javascript - 从脚本标签中提取自定义属性(不使用数据-)

unit-testing - 如何对包含路由器弃用版本的 Angular 2.0 服务进行单元测试?

docker - 从主机OS访问 guest OS的docker内部的kubernetes

Node.js - 监控数据库的变化

javascript - 通过 Firestore 中类型为 'reference' 的字段进行查询

json - 如何在 Angular2 中与其动态交互的 2 个组件中注入(inject)相同的服务

docker - dpkg : docker-ce: dependency problems, 但仍按您的要求删除:nvidia-docker

docker - 将大文件添加到Docker构建中会导致EOF异常

asp.net-mvc - 从 ASP.NET MVC 项目运行 Edge.js

node.js - 如何在 Prisma ORM 中对数字字段使用 LIKE?