【问题标题】:How to Dockerizing a Angular 2 web app via node js?如何通过节点 js 对 Angular 2 Web 应用程序进行 Dockerizing?
【发布时间】:2017-09-02 18:45:03
【问题描述】:

我尝试找到许多使用节点 js 对 Angular 2 Web 应用程序进行 Dockerizing 的方法,但尚未奏效,它在本地运行但无法在 docker 容器上运行。有没有人有任何合适的 Dockerfilepackage.json 用于对接 Angular 2 应用程序的文件。

FROM node:boron

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 5655
CMD [ "npm","start" ]

访问时无法访问网站

以下是我在堆栈溢出但未奏效的一些可能方法

docker run --rm --name my-container -it -p 8080:4200 -v $(pwd):/var/www -w "/var/www" node npm start

在 package.json 中,即使我将端口保持为动态 "ng serve -host 0.0.0.0",

还建议我需要使用哪个服务器 nginxnode 来对接 Angular 2 web-app

"scripts": {
    "start": "node ./bin/www",
    "build": "del-cli public/js/app && webpack --config webpack.config.dev.js --progress --profile --watch",
    "build:prod": "del-cli public/js/app && ngc -p tsconfig.aot.json && ngc -p tsconfig.aot.json && webpack --config webpack.config.prod.js --progress --profile --bail && del-cli 'public/js/app/**/*.js' 'public/js/app/**/*.js.map' '!public/js/app/bundle.js' '!public/js/app/*.chunk.js' 'assets/app/**/*.ngfactory.ts' 'assets/app/**/*.shim.ts'"
  }

【问题讨论】:

  • 您的 Angular 应用程序必须由任何类型的 http 服务器提供服务 - 它可以是一个简单的 node.js 文件,其中配置了“express”模块。您可以在这里发布您的 package.json 的内容,或者至少是其中的“脚本”部分吗?
  • @sergiy.dragunov "scripts": { "start": "node ./bin/www", "build": "del-cli public/js/app && webpack --config webpack. config.dev.js --progress --profile --watch", "build:prod": "del-cli public/js/app && ngc -p tsconfig.aot.json && ngc -p tsconfig.aot.json && webpack --config webpack.config.prod.js --progress --profile --bail && del-cli 'public/js/app/**/*.js' 'public/js/app/**/*. js.map' '!public/js/app/bundle.js' '!public/js/app/*.chunk.js' 'assets/app/**/*.ngfactory.ts' 'assets/app/* */*.shim.ts'" },
  • @sergiy.dragunov 我在描述部分添加了我的脚本

标签: node.js angular docker dockerfile docker-machine


【解决方案1】:
  1. 首先我建议在您的机器上运行“npm start”;
  2. 并检查在此之后您是否可以在浏览器中访问您的 Angular 应用程序;
  3. 如果可行 - 您需要记住您的 Angular 应用程序在哪个端口提供服务;
  4. 在 EXPOSE 行之前添加新的 RUN 部分“RUN npm run build:prod”;
  5. 在 EXPOSE 部分设置正确的端口;
  6. 运行容器:“docker run --rm --name my-container -it。”
  7. 在 http:127.0.0.1:HERE_PORT_FROM_EXPOSE_SECTION 打开浏览器

这是一个小例子: https://github.com/karlkori/dockerized-angular-app

我还想补充一点,生产环境最好使用 Nginx 或 CloudFront。

【讨论】:

  • sergiy.dragunov 上述步骤没有同样的错误
  • 您的应用程序是私有的吗?你能在 github 或 bitbucket 上分享它的代码吗?
  • 添加了示例链接
猜你喜欢
  • 2017-09-25
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 2015-12-30
  • 2018-11-19
  • 1970-01-01
相关资源
最近更新 更多