无法在 dockerfile 上构建打字稿
Can not build typescript on dockerfile
我想为 typescript/node API 设置 CD 管道。我正在使用 Dockerfile 手动将图像上传到 AWS ECR,它按预期工作。
FROM node:11-slim
EXPOSE 8080
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/src
COPY ./node_modules node_modules
COPY ./dist dist
COPY ./package.json package.json
ENV PORT=8080
USER node
CMD ["node", "./dist/app.js"]
要将图像上传到 AWS ECR,我使用以下 Dockerfile:
FROM node:11-slim
EXPOSE 8080
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/src
COPY ./package.json package.json
RUN npm add -g typescript
RUN npm install tsc -g
RUN npm install
RUN sh -c tsc -p .
ENV PORT=8080
USER node
CMD ["node", "./dist/app.js"]
我使用 RUN sh -c tsc -p .
命令构建我的项目。即使构建成功,也不会包含镜像中包含构建项目的dist文件夹。
这是我的项目 package.json 文件的摘录:
"scripts": {
"start": "node dist/app.js",
"install": "yarn install",
"postinstall": "tsc -p .",
"watch": "tsc -w -p .",
"debug": "nodemon --watch ./dist --inspect=0.0.0.0:9222 --nolazy ./dist/app.js",
"docker-debug": "sudo tsc && docker-compose up --build"
},
当我使用 RUN npm run postinstall
时,编译器错误:missing script postinstall
.
图像中唯一的源文件是 package.json
文件; tsc
没有任何东西可以建造。在 RUN tsc
.
之前,您需要 COPY
在其余的应用程序源代码中
此处典型的 Dockerfile 看起来更像:
FROM node:11-slim
WORKDIR /usr/src/app
# Also copy the lock file
COPY ./package.json ./package.lock .
# typescript is a devDependencies, no need to separately install it
RUN npm install
# Copy the rest of your application in
# (include `node_modules` in a `.dockerignore` file)
COPY ./ ./
# Now build it (Docker supplies a `sh -c` wrapper for you)
RUN tsc -p .
# Runtime metadata as above
ENV PORT=8080
EXPOSE 8080
USER node
CMD ["node", "./dist/app.js"]
我想为 typescript/node API 设置 CD 管道。我正在使用 Dockerfile 手动将图像上传到 AWS ECR,它按预期工作。
FROM node:11-slim
EXPOSE 8080
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/src
COPY ./node_modules node_modules
COPY ./dist dist
COPY ./package.json package.json
ENV PORT=8080
USER node
CMD ["node", "./dist/app.js"]
要将图像上传到 AWS ECR,我使用以下 Dockerfile:
FROM node:11-slim
EXPOSE 8080
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/src
COPY ./package.json package.json
RUN npm add -g typescript
RUN npm install tsc -g
RUN npm install
RUN sh -c tsc -p .
ENV PORT=8080
USER node
CMD ["node", "./dist/app.js"]
我使用 RUN sh -c tsc -p .
命令构建我的项目。即使构建成功,也不会包含镜像中包含构建项目的dist文件夹。
这是我的项目 package.json 文件的摘录:
"scripts": {
"start": "node dist/app.js",
"install": "yarn install",
"postinstall": "tsc -p .",
"watch": "tsc -w -p .",
"debug": "nodemon --watch ./dist --inspect=0.0.0.0:9222 --nolazy ./dist/app.js",
"docker-debug": "sudo tsc && docker-compose up --build"
},
当我使用 RUN npm run postinstall
时,编译器错误:missing script postinstall
.
图像中唯一的源文件是 package.json
文件; tsc
没有任何东西可以建造。在 RUN tsc
.
COPY
在其余的应用程序源代码中
此处典型的 Dockerfile 看起来更像:
FROM node:11-slim
WORKDIR /usr/src/app
# Also copy the lock file
COPY ./package.json ./package.lock .
# typescript is a devDependencies, no need to separately install it
RUN npm install
# Copy the rest of your application in
# (include `node_modules` in a `.dockerignore` file)
COPY ./ ./
# Now build it (Docker supplies a `sh -c` wrapper for you)
RUN tsc -p .
# Runtime metadata as above
ENV PORT=8080
EXPOSE 8080
USER node
CMD ["node", "./dist/app.js"]