#node.js #angular #docker #nginx
#node.js #angular #docker #nginx
Вопрос:
У меня есть приложение Angular 9, базовым href которого является «./». Nginx работает только в / route1 / route2 / Приложение отлично работает с nginx, я могу перейти на localhost: 8080 / route1 / route2, и угловые маршруты начнут работать должным образом. Проблема, которую я обнаружил, заключается в том, что активы не найдены. Итак, прямо сейчас компоненты загружены правильно, но без ресурсов.
папка активов находится под src/
Конфигурационный файл Nginx:
worker_processes 4;
events { worker_connections 4096; }
http {
server {
listen 8080;
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
location /route1/route2 {
try_files $uri /app/index.html;
}
}
}
Dockerfile:
ARG mode
### STAGE 1: Build ###
FROM node:alpine AS build
COPY package.json package-lock.json ./
RUN npm install amp;amp; mkdir /app-ui amp;amp; mv ./node_modules ./app-ui
WORKDIR /app-ui
COPY . .
RUN npm run ng build -- --deploy-url=/app/
### STAGE 2: Run ###
FROM nginx:alpine
# Copy the default nginx.conf provided by the proyect
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
## Remove default nginx index page
RUN rm -rf /usr/share/nginx/html/*
COPY --from=build /app-ui/dist /usr/share/nginx/html
ОБНОВЛЕНИЕ!
Я обнаружил, что изображения находятся в / localhost: 8080/app/assets /… Проблема сейчас в том, что сервер пытается загрузить ресурсы из …8080 /route1 / route2 /assets…
Комментарии:
1. используете ли вы относительные пути при ссылке на /assets /? это должны быть абсолютные пути, начинающиеся с root. т.Е. <img src=»/assets/test.jpg «>
Ответ №1:
Проблема может быть в angular.json
файле. Убедитесь, что вы включили src/assets
в массив активов angular.json