Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular AWS和AWS EC2上部署的Docker或Docker_Angular_Amazon Web Services_Docker_Amazon Ec2_Dockerfile - Fatal编程技术网

Angular AWS和AWS EC2上部署的Docker或Docker

Angular AWS和AWS EC2上部署的Docker或Docker,angular,amazon-web-services,docker,amazon-ec2,dockerfile,Angular,Amazon Web Services,Docker,Amazon Ec2,Dockerfile,这里有两个问题 我想弄清楚AWS的普通Docker和Docker的主要区别是什么 对于我的项目,我将运行一个用Angular 2编码的GUI,它打包在AWS EC2上的Docker容器中 1我应该为我的目的使用AWS Docker吗 2 Docker是否可能[1]从GITHUB存储库获取我的代码,并在我运行Docker时[2]构建它 3在AWS上部署Docker容器的最佳方式是什么? 是否有可遵循的指南或一些最佳实践示例 提前谢谢你 1我应该为我的目的使用AWS Docker吗 Docker f

这里有两个问题

我想弄清楚AWS的普通Docker和Docker的主要区别是什么

对于我的项目,我将运行一个用Angular 2编码的GUI,它打包在AWS EC2上的Docker容器中

1我应该为我的目的使用AWS Docker吗

2 Docker是否可能[1]从GITHUB存储库获取我的代码,并在我运行Docker时[2]构建它

3在AWS上部署Docker容器的最佳方式是什么? 是否有可遵循的指南或一些最佳实践示例

提前谢谢你

1我应该为我的目的使用AWS Docker吗

Docker for AWS通过CloudFormation提供自愈基础设施。如果您的应用程序需要自动伸缩,那么这是一个很好的选择。然而,成本将增加

2 Docker是否可能[1]从GITHUB存储库获取我的代码,并在我运行Docker时[2]构建它

使用GitHub web钩子/集成,您可以通过Jenkins/Travis/另一个CI工具为自己构建映像。这可以将图像发布到Docker Hub或自托管/第三方注册表

3在AWS上部署Docker容器的最佳方式是什么?是否有可遵循的指南或一些最佳实践示例

每个用例都是不同的。这是测试用的吗?演示?生产恐怕有太多的因素无法解决这个问题

编辑:

3.这是目前的演示版


我只需要启动一个EC2实例,安装docker引擎,并在@Rawkode解释一切时使用它。我只想补充你最后一点。 对于使用ec2实例运行基于docker的应用程序,您可以使用

在Amazon EC2容器服务Amazon ECS上部署Docker容器

Amazon EC2容器服务Amazon ECS是用于在可扩展集群上运行Docker应用程序的Amazon Web服务

您可以使用docker运行angular应用程序。正如您在评论中提到的,您可以使用ng build-prod。为您构建并创建dist文件夹。下面是我如何在AWS中部署基于angular docker的应用程序

首先,创建一个express服务器,它将为您的静态文件提供服务

   var express =     require('express');
   var path = require('path');
   var router = express.Router();
   var app = express();
   // serve angular front end files from root path
   app.use('/', express.static('dist', {
       redirect: false
   }));
   // rewrite virtual urls to angular app to enable refreshing of internal 
   pages
   app.get('*', function(req, res, next) {
       res.sendFile(path.resolve('dist/index.html'));
   });

   app.listen(3000, function(req, res) {
       console.log("start");
   })
因此,这将服务于您的静态文件和S3,您将面临刷新时的错误,这可以使用重写规则解决。 为express创建docker文件,express将处理静态文件

    FROM alpine
RUN apk update && apk upgrade
RUN apk add nodejs
RUN mkdir -p /app
ADD app/package.json /app
WORKDIR /app/
ENV HOME /app
ENV NODE_ENV development
RUN npm install
ADD app /app
EXPOSE 3000
CMD npm start
在express server文件所在的应用程序文件夹中,将dist文件夹放在同一目录中

现在,要部署基于docker的应用程序,请访问此链接

在AWS上托管Web应用程序的最佳实践

以上我只是试图解释如何在AWS ECS上运行angular应用程序,通过运行同一任务的多个副本并配置负载平衡器,您可以让它变得更好

至于最佳实践,则是web应用程序关注的问题

用于静态应用

更多细节

Docker和AWS已经合作,使得在Amazon的EC2基础设施上部署企业容器即服务CaaS Docker环境比以往任何时候都更容易。在AWS上运行Docker Datacenter为开发人员和IT运营部门提供了一种高度可靠、低成本的方式,可以在一次单击中部署生产就绪的工作负载


谢谢你的回复!3目前它是用于演示porpuse的。只需使用一个EC2实例:在我研究之后,就可以构建我的angular 2应用程序ng build-prod,并在AWS的S3上运行它们,对吗?这种方式会比将此构建放在Docker容器中并使用Web服务器nginx或node.js更好吗?还有什么更好的方法?在EC2实例上?什么更具成本效益或不会使部署过程变得复杂?是的,您当然可以将其托管在S3上。如果需要SSL终止,则需要使用CloudFront,这将涉及解决缓存破坏和其他复杂性。只要不断提出问题,人们就会尽最大努力提供帮助: