Я разработал приложение 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;
}
}
Dockerfile
# 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:
![enter image description here](https://i.stack.imgur.com/dPBR0.png)
И причина, по которой это происходит, в том, что папка /app/dist
содержит подпапку с названием приложения, MyWalletFe
, который содержит весь файл приложения Angular (изображение берется после локального запуска npm run build
для отображения структуры папки):
![Folder structure](https://i.stack.imgur.com/qyarO.png)
в то время как на рабочем сервере в папке /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