Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

874
Vistas
Deploy angular application on nginx server with Docker Welcome to nginx

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:
enter image description here
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):

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.

Resources

Angular in Docker with Nginx

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

you can add the command to remove the default nginx index page just before copying

COPY ./conf/default.conf /etc/nginx/conf.d/default.conf
RUN rm -rf /usr/share/nginx/html/*  <--- add this
COPY --from=builder /app/dist/ /usr/share/nginx/html    

and change your nginx config to :

try_files $uri $uri/ /index.html =404;
over 4 years ago · Santiago Trujillo Denunciar

0

Change the last line of your docker file to:

COPY --from=builder /app/dist/ /var/www/html/

And for single-page applications like Angular, you should change your Nginx config to this:

try_files $uri $uri/ /index.html;
over 4 years ago · Santiago Trujillo Denunciar

0

Sometimes the cause can be the most stupid thing, having something like this in my angular.json:

  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "options": {
            "outputPath": "dist/my-app",

that was causing my app was copied to /usr/share/nginx/html/my-app

I hope you don't waste several hours breaking your mind like me :||

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda