dockernize角应用

问题描述 投票:0回答:1

我正在尝试将angular5应用程序固定,并将其部署在AWS实例上。

DockerFile:

FROM mhart/alpine-node:8.9.4


ENV REFRESHED_AT 2017-10-01

WORKDIR /opt/
# install dependencies
COPY package*.json ./
RUN npm install
COPY . .
# expose server ports
EXPOSE 4200 49153

CMD ["npm", "start"]

泊坞窗 - 撰写:

version: '2.1'

services:
  my-app:
    image: my/app:latest
    build: .
    ports:
        - "4200:4200"
        - "49153:49153"

的package.json

{
   ...
  "scripts": {
    "ng": "ng",
    "start": "ng serve -H 0.0.0.0 --disable-host-check true --prod",
    "build": "ng build --prod"
  },
  "dependencies": {
   ...
  },
  "devDependencies": {
   ...
  }
}

"ng serve -H 0.0.0.0 --disable-host-check true --prod"是我在Internet上找到的命令,它可以帮助我在AWS实例上成功运行应用程序。在我将"@angular/cli": "1.6.1""@angular/compiler-cli": "^5.0.0"devDependencies添加到dependencies之后,当前设置非常奇怪。我想知道为什么需要dev-dependencies与--prod一起运行?我应该如何改进或纠正我的设置?

angular amazon-web-services docker
1个回答
0
投票

首先,--prod开关只意味着你的应用程序将是optimized for production

据说ng serve不是生产级服务器(使用或不使用prod开关 - 它只适用于输出)。以下是docs的一段摘录:

ng serve命令从本地CLI开发服务器构建,监视和提供应用程序。

现在我们知道它是一个仅开发服务器,我们需要找到一个生产服务器。有很多选项,例如你可以使用nginxApache

最后,您可以使用多阶段Docker镜像来构建和捆绑您的应用程序。这种图像的Dockerfile可能如下所示:

# build stage
FROM node:carbon as build

# print npm version
RUN npm -v

# copy just package.json to leverage caching
COPY ./package.json /app/package.json

WORKDIR /app

# install dependencies and cache them
RUN npm install

# copy the rest of the project
COPY . /app

RUN npm run build

# deploy stage
FROM nginx:alpine

COPY --from=build /app/dist /usr/share/nginx/html
© www.soinside.com 2019 - 2024. All rights reserved.