Я разработал приложение 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
содержат некоторые ошибки.
Возможно, что-то настроено неправильно? В разделе Ресурсы я добавил статью, за которой следил.
/usr/share/nginx/html/
. Почему я должен изменять конфигурацию nginx таким образом? 14.04.2020