Хобрук: Ваш путь к мастерству в программировании

Разверните угловое приложение на сервере nginx с помощью Docker Добро пожаловать в nginx

Я разработал приложение Angular 7 и теперь собираюсь развернуть его на рабочем сервере на сервере nginx. Я новичок в развертывании внешнего интерфейса на сервере nginx, поэтому, вероятно, мне не хватает чего-то, что легко найти. Я решил использовать Docker для управления развертыванием.
Имя приложения: MyWalletFe.


конфигурационный файл сервера nginx

Путь: ./conf/default.conf

server {
    listen 80;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

}

Докерфайл

# build
FROM node:alpine as builder
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build

# deploy
FROM nginx
EXPOSE 80
COPY ./conf/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/dist/ /usr/share/nginx/html

Где я копирую свой файл конфигурации nginx в папку по умолчанию, затем я копирую вывод npm run build с предыдущего этапа в файл /usr/share/nging/html.

Выход

Я всегда получаю веб-страницу nginx по умолчанию:
введите здесь описание изображения
Причина, по которой это происходит, заключается в том, что папка /app/dist содержит подпапку с названием приложения MyWalletFe, которое содержит весь файл приложения Angular (изображение взято после локального запуска npm run build, чтобы показать структуру папок):

Структура папок

в то время как на рабочем сервере в папке /usr/share/nginx/html все еще есть index.html по умолчанию с этой страницей, которая обслуживается.

root@3b7da83d2bca:/usr/share/nginx/html# ls -l
total 12
-rw-r--r-- 1 root root  494 Mar  3 14:32 50x.html
drwxr-xr-x 2 root root 4096 Apr 13 20:32 MyWalletFE
-rw-r--r-- 1 root root  612 Mar  3 14:32 index.html


Я думаю, что для этого нужно скопировать содержимое папки MyWalletFe в родительскую папку (/usr/share/nginx/html); в данном случае default.conf или Dockerfile содержат некоторые ошибки.
Возможно, что-то настроено неправильно? В разделе Ресурсы я добавил статью, за которой следил.

Ресурсы

Angular в Docker с Nginx


Ответы:


1

вы можете добавить команду для удаления страницы индекса nginx по умолчанию непосредственно перед копированием

COPY ./conf/default.conf /etc/nginx/conf.d/default.conf
RUN rm -rf /usr/share/nginx/html/*  <--- add this
COPY --from=builder /app/dist/ /usr/share/nginx/html    

и измените конфигурацию nginx на:

try_files $uri $uri/ /index.html =404;
13.04.2020
  • Благодарю вас! Итак, проблема заключалась в файлах по умолчанию в /usr/share/nginx/html/. Почему я должен изменять конфигурацию nginx таким образом? 14.04.2020

  • 2

    Измените последнюю строку вашего файла докера на:

    COPY --from=builder /app/dist/ /var/www/html/
    

    А для одностраничных приложений, таких как Angular, вы должны изменить конфигурацию Nginx на это:

    try_files $uri $uri/ /index.html;
    
    13.04.2020
    Новые материалы

    Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
    Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

    Это оно
    Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

    7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
    Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

    Базовое руководство по переносу концепций обучения в глубокое обучение
    Обзор По мере того, как машинное обучение становится все более мощным и продвинутым, модели, обеспечивающие эту расширенную возможность, становятся все больше и начинают требовать огромного..

    C в C.R.U.D с использованием React-Redux
    Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

    5 обязательных элементов современного инструмента конвейера данных
    В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..

    Случай использования npm3 вместо npm2 для разработки библиотеки
    Некоторое время назад я создал библиотеку на NodeJS, чтобы упростить рендеринг на стороне сервера и клиента. Он использует React и React Router для отображения соответствующего HTML на веб-сайте...