作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在从 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/
我是一名优秀的程序员,十分优秀!