【发布时间】:2021-06-29 23:34:02
【问题描述】:
我正在尝试使用 Docker 和 Docker compose 对 Angular 应用程序进行 dockerize。
Dockerfile 看起来像这样
FROM node:13.10.1-alpine AS build
RUN mkdir /app
RUN apk update && apk add --no-cache git
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm install
COPY ./src ./src
COPY *.json ./
COPY *.js ./
COPY .git ./.git
RUN npm run build
FROM nginx:1.19.4-alpine AS dp-fe_nginx
COPY --from=build /usr/src/app/dist/ /usr/share/nginx/html
COPY docker/nginx-default.conf /etc/nginx/conf.d/default.conf
WORKDIR /usr/share/nginx/html
ENTRYPOINT nginx -g 'daemon off;'
Docker-compose.yml 看起来像这样
version: '3.8'
services:
dp-fe:
build:
context: ./
dockerfile: Dockerfile
ports:
- 4200:4200
networks:
- dp-fe_network
volumes:
- dp-fe_volume
volumes:
dp-fe_volume:
networks:
dp-fe_network:
driver: bridge
package.json 中的任务如下所示
"scripts": {
"ng-openapi-gen": "ng-openapi-gen",
"ng": "ng",
"start": "npm run ng-openapi-gen && npm run ng --serve",
"build": "npm run ng-openapi-gen && npm run ng --build -prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
}
ng-openapi-gen 是一个功能,它允许我连接到 swagger 文档并生成与该打开的 api swagger doc 对应的 http 层。
当我在 docker 外运行 run 或 build 任务时,它成功完成(应用程序已启动并正在运行,或者存在一个包含已编译应用程序的 dist 文件夹)。
但是当我尝试运行 docker-compose up 时,我收到了这个错误
> [build 11/11] RUN npm run build:
#17 0.516
#17 0.516 > dp@0.0.0 build /usr/src/app
#17 0.516 > npm run ng-openapi-gen && npm run ng --build -prod
#17 0.516
#17 0.759
#17 0.759 > dp@0.0.0 ng-openapi-gen /usr/src/app
#17 0.759 > ng-openapi-gen
#17 0.759
#17 0.763 sh: ng-openapi-gen: not found
another frames telling me build failed omitted
目标是构建 Angular 应用程序(使用构建任务,所以首先我需要运行该 api 生成任务然后构建整个应用程序),将其放入 nginx 服务器并在端口 4200 上公开它。我是什么做错了吗?
【问题讨论】:
-
您的
package.json(可能在devDependencies下)中列出了该工具吗? -
@DavidMaze 是的,这就是问题所在,依赖项是全局安装的。谢谢您的帮助。您能否将其发布为答案,以便我标记它?
标签: angular docker nginx docker-compose dockerfile