我是Docker和容器化的新手。我有一个用于后端服务的Spring Boot应用程序,前端使用AngularCLI / Angular4。我尝试使用下面的代码来容器化角度服务,并且运行docker-compose up命令给出以下错误:
找不到本地工作区文件('angular.json')。错误:本地 找不到工作区文件('angular.json')。 在WorkspaceLoader._getProjectWorkspaceFilePath(/usr/local/lib/node_modules/@angular/cli/models/workspace-loader.js:44:19)
这是我的 Dockerfile:
FROM node:8.11-alpine as node-angular-cli
WORKDIR src/main/java/frontend
RUN npm install -g @angular/cli
EXPOSE 4200
CMD ["ng", "serve", "--proxy", "-", "config", "proxy.conf.json"]
docker-compose.yaml
version: '3'
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_DATABASE: root
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
ports:
- "3306:3306"
angular:
build:
context: .
dockerfile: Dockerfile
ports:
- "4200:4200"
是否有更好的方法来容器化此应用程序?我成功地将整个应用程序进行了容器化,但是前端部分似乎无法正常工作,因为在容器化时,我没有包括启动和运行角度服务所需的配置(ng serve cmd及其相关的安装详细信息)因此,创建一个新的DockerFile(如上所示)?我可以仅使用一个Dockerfile来同时运行这两个服务吗?
答案 0 :(得分:0)
我在Dockerfile
中使用以下步骤来容器化Angular应用。
FROM johnpapa/angular-cli as angular-built
WORKDIR /usr/src/app
COPY package.json package.json
RUN npm install --silent
COPY . .
RUN ng build --prod
FROM nginx:alpine
LABEL author="Preston Lamb"
COPY --from=angular-built /usr/src/app/dist /usr/share/nginx/html
EXPOSE 80 443
CMD [ "nginx", "-g", "daemon off;" ]
第一步是构建Angular图像(此示例具有--prod
标志,但是您可以将其更改为--env=test
),然后将构建的应用程序复制到基于NGINX的图像中。服务应用程序。