Angular приложение + NGINX + Docker

У меня проблема с обслуживанием приложения Angular с использованием nginx на докере. Проблема только тогда, когда я хочу включить 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. Вроде все хорошо.

Angular приложение + NGINX + Docker

Если я удалю эти строки, посвященные SSL, все будет работать нормально, и на сервере я смогу увидеть свое приложение, но только через http.

Сертификаты действующие, я проверил.

Что я делаю неправильно?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
5
0
2 964
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы включить SSL, вам необходимо настроить для него Nginx. Насколько я вижу в вашем коде, вы все еще используете конфигурацию Nginx по умолчанию без каких-либо изменений. Вот пример на как включить SSL на 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;

Также я вижу, что вы монтируете том (-v / etc / nginx / certs: / etc / nginx / certs) в команде запуска докера, это означает, что / etc / nginx / certs в контейнере будет таким же, как и хост и поэтому убедитесь, что у вас есть правильные сертификаты на хост-машине!

Другие вопросы по теме