I developed an Angular 7 application and now I'm going to deploy it on production server on an nginx server. I'm pretty new to frontend deployment on nginx server, so probably I'm missing something easy to find. I decided to use Docker to manager the deployment.
The application name is MyWalletFe
.
nginx server configuration file
Path: ./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
Where I copy my nginx configuration file in the default location, then I copy the output of npm run build
from previous stage in the /usr/share/nging/html
.
Output
I always get the default nginx webpage:
And the reason why this happens is that the folder /app/dist
contains a subfolder with the name of the app, MyWalletFe
, which contains all the file of the Angular application (the image is taken after run locally npm run build
to show the folder structure):
while on the production server in folder /usr/share/nginx/html
there is still the default index.html
with this page that is served.
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
I think that for this to work the content of MyWalletFe
folder should be copied to the parent folder (/usr/share/nginx/html
); in this case default.conf
or Dockerfile
contain some errors.
Is there something that is configured in a wrong way? In Resources section I've added the article which I followed.
/usr/share/nginx/html/
.. Why do I have to modify the nginx config in that way? – Byran