Angular 应用 + NGINX + Docker

标签 angular docker nginx web

我在 docker 上使用 nginx 服务 Angular 应用程序时遇到问题。 仅当我想在站点上打开 SSL 时才会出现问题。 我正在使用 Bamboo 进行部署。

这是我的 Dockerfile:

FROM node:8.6 as node
WORKDIR /app
COPY package.json /app/
COPY ssl/certificate.crt /app/
COPY ssl/ /app/ssl

RUN npm install -g @angular/cli --unsafe
RUN npm install

COPY ./ /app/
RUN ng build --prod --aot=false --env=prod

FROM nginx

RUN mkdir -p /ssl
COPY --from=node /app/ssl/ /ssl/
ADD ssl/certificate.crt /etc/nginx/certs/
ADD ssl/private.key /etc/nginx/certs/
RUN ls /etc/nginx/certs/

COPY --from=node /app/dist/ /usr/share/nginx/html

RUN ls /usr/share/nginx/html

要运行的脚本:

docker build -t test-app .
docker run --name test-app-cont -v /etc/nginx/certs:/etc/nginx/certs -d -p 3010:443 test-app

部署运行成功,但服务的服务器上没有应用程序。

请查看此屏幕:列出了/certs 和/html 目录中的内容。一切似乎都很好。

enter image description here

如果我删除这些专用于 SSL 的行,一切正常,并且在服务器上我可以看到我的应用程序,但只能通过 http。

证书有效,我检查过。

我做错了什么?

最佳答案

要启用 SSL,您需要为其配置 Nginx。据我在您的代码中看到的,您仍在使用默认的 Nginx 配置,没有进行任何修改。这是关于 how to enable SSL on Nginx 的示例.主要组成部分是:

server {

    listen 443;
    server_name jenkins.domain.com;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

我还看到您在 docker run 命令中挂载了一个卷 (-v/etc/nginx/certs:/etc/nginx/certs),这意味着容器中的/etc/nginx/certs 将是相同的作为主机,因此请确保您在主机上拥有正确的证书!

关于Angular 应用 + NGINX + Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49448669/

相关文章:

amazon-web-services - nginx: [emerg] 在/etc/nginx/nginx.conf:11 中的上游 "udagram-users:8080"中找不到主机

nginx - nginx.service 的作业失败,因为控制进程退出并显示错误代码

node.js - 为什么我的 import @angular/core 路径与在线教程不同?

angular - promise 并订阅

Angular 2路由器无法使用多个传递的参数

postgresql - Docker - 检查 postgres 是否准备就绪

angular - EventEmitter 的正确用法是什么?

mysql - 错误 :superset. views.core:意外错误没有名为 'pymysql' 的模块

docker - 如何在运行 docker-compose up 时运行多个 docker 容器(gitlab-ci)

nginx - 错误(没有这样的过程)Nginx+Gunicorn+Supervisord