У меня есть VirtualBox с docker-compose, настроенным для запуска приложения Angular, и nginx для решения коллизии портов с другим приложением (вне рамок вопроса).Я могу правильно связаться с приложением на хост-машине (через http://localhost:90/angularApp),, но не могу правильно связаться с внешней машиной, так как angular не может правильно найти нужные ему статические файлы.
Я пыталсяигра с различными настройками в nginx's development.conf (так как я полагаю, что именно здесь я должен правильно настроить среду) и угловыми параметрами 'serve' (в основном, 'baseHref'), но любое из приложений будет работать только через localhost: 4200 (native angular) и localhost: 90 / angularApp (прокси-сервер nginx), или только через первый.
Я также попробовал google-fu, но не нашел ничего, что могло бы помочь в этом сочетании среды докера имаршрутизация
Вот мои конфигурационные файлы:
project / docker / angular / DockerFile
FROM node:12.2.0
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
project / docker / nginx / development.conf
server {
listen 80;
server_name nginx;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
location /angularApp {
proxy_pass http://myApplication:4200/;
}
}
project / docker-compose.yml
version: "2.1"
services:
nginx:
image: nginx
ports:
- "90:80"
volumes:
- ./docker/nginx:/etc/nginx/conf.d
networks:
- back
myApplication:
build: ./docker/angular/
command: bash -c "npm i && ng serve --host 0.0.0.0 --baseHref http://localhost:90/angularApp/" <-- I know this can't work when I'd access from another machine
working_dir: /app
volumes:
- ./myApplication:/app
ports:
- "4200:4200"
networks:
- back
networks:
back:
driver: bridge
Основная ошибка заключается в том, что когда для местоположения задано значение "/ angularApp" [hostIp]: 90 / angularApp не может его найтиs собственные статические файлы (GET http://localhost:90/angularApp/runtime.js net::ERR_CONNECTION_REFUSED angularApp:11
), хотя доступ с гостевой машины работает нормально, но я не понимаю, что я должен использовать в baseHref
и в конфигурации местоположения nginx, чтобы сделать myApplication доступным извне.
В случае, если мне придется использовать конфигурацию root
в расположении nginx, я не могу использовать абсолютные пути, так как это общий проект.
(я также знаю, что самым простым обходным решением будетперенаправить все запросы localhost на удаленную машину, так как это виртуальная машина на моей собственной машине, но мне это показалось подвохом)