Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

878
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda