Мой файл докеров для развертывания моего углового приложения не запускает приложение с помощью веб-сервера ни nodeJs, ни nginx

Я закончил работу над проектом Angular, и мне нужно развернуть его с помощью Docker. Я следовал инструкциям и убедился, что файл dockerfile правильный, используя несколько источников. Я пытался использовать nginx или nodejs, но это не работает (для nginx он показывает мне страницу сервера nginx по умолчанию).

для сборщика это ' "builder": "@angular-devkit/build-angular:application", ' а для версии проекта, которую я использую: Angular CLI: 17.3.8 Node: 20.15.1 .

вот файл docker, который я сейчас использую для создания образа:

# Stage 1: Build Angular application
FROM node:latest as build

WORKDIR /app

COPY package*.json ./

RUN npm install

RUN npm install -g @angular/cli

COPY . .

RUN ng build --configuration=production

# Stage 2: Serve Angular application with Nginx
FROM nginx:latest

COPY --from=build /app/dist/projet-daret /usr/share/nginx/html

EXPOSE 80

это моя докер-композиция:

     version: '3.8'
    services:
      angular-app:
        build: .
        ports:
          - "4300:80"
      nginx:
        image: nginx:latest
        ports:
          - "4300:80"
        volumes:
          - ./nginx.conf:/etc/nginx/nginx.conf
        depends_on:
          - angular-app

Примечание. У меня есть Dockerfile для версии, которая использует nodejs в качестве веб-сервера.

когда я использую докер только с приложением angular и запускаю его с помощью ng serve, он работает нормально, но когда я использую nginx или nodejs, он не запускает приложение angular, я попробовал несколько модификаций, которые смог найти для файла докера, но безрезультатно Я попробовал событие использовать Compose, но это также не дало результата. я застрял прямо сейчас.

Какую версию Angular вы используете, какая версия использовалась для создания проекта? Вы используете конструктор браузеров @angular-devkit/build-angular:browser или конструктор приложений @angular-devkit/build-angular:application? (Ищите вangular.json)

JSON Derulo 10.07.2024 16:04

Можете ли вы отредактировать вопрос, включив в него Dockerfile и настройки контейнера, которые не работают? Вы говорите: «Он не запускает приложение Angular»; как вы это определяете и какой результат видите?

David Maze 10.07.2024 16:10

для сборщика это ' "builder": "@angular-devkit/build-angular:application", ' и для версии проекта, которую я использую: Angular CLI: 17.3.8 Узел: 20.15.1

Soye Gh 10.07.2024 16:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы используете новый конструктор приложений. Структура папок теперь выглядит следующим образом:

dist/
  <your-app-name>/
    browser/
      index.html
      main.js
      ...

Однако похоже, что ваш Dockerfile все еще ожидает старой структуры от конструктора браузера:

dist/
  <your-app-name>/
    index.html
    main.js
    ...

Обратите внимание, что папки browser нет. Вам нужно настроить файл docker, чтобы скопировать папку browser:

COPY --from=build /app/dist/projet-daret/browser /usr/share/nginx/html

Дополнительный контекст: для приложений, отображаемых на стороне клиента, это кажется ненужным. Но для приложений, отображаемых на стороне сервера, будут две папки: папка browser с предварительно обработанными страницами и папка server с серверным кодом NodeJS.

Также убедитесь, что ваш сервер nginx правильно настроен для размещения приложения Angular. Судя по всему, у вас нет конфигурации, что может быть проблематично. См. этот вопрос: Как настроить nginx для запуска приложения angular4

я сделал то, что вы мне сказали, вот мой файл докеров: # Stage 1: Build Angular application FROM node:latest as build WORKDIR /app COPY package*.json ./ RUN npm install RUN npm install -g @angular/cli COPY . . RUN ng build --configuration=production # Stage 2: Serve Angular application with Nginx FROM nginx:latest COPY --from=build /app/dist/projet-daret/browser /usr/share/nginx/html EXPOSE 80 но все же, когда я запускаю контейнер и получаю доступ к назначенному адресу, у меня есть страница nginx по умолчанию. может ли проблема исходить от: RUN ng build --configuration=production

Soye Gh 10.07.2024 17:17

@SoyeGh обновил мой ответ, возможно, вам просто не хватает какой-то конфигурации.

JSON Derulo 10.07.2024 18:06

я изменил свой Dockerfile на этот, и он работает: # Stage 1: Build Angular application FROM node:latest AS build WORKDIR /app COPY package*.json ./ RUN npm install RUN npm install -g @angular/cli COPY . . RUN ng build --configuration=production # Stage 2: Serve Angular application with Nginx FROM nginx:latest COPY --from=build /app/dist/projet-daret/browser /usr/share/nginx/html #COPY --from=build /app/dist/projet-daret/browser /var/www/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

Soye Gh 11.07.2024 13:28

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

Похожие вопросы