I am new to angular and I would like to host the application on a Nginx server in a Nginx container.
1. Launching an angular app via @ angular / cli
To do this, I took the following steps:
1.1. Install @ angular / cli and create an application with angular 4
sudo npm install -g @angular/cli ng new angular4-on-nginx-with-docker
1.2. Serving the application through npm start
The angular app works correctly through
npm start
Now I want to avoid the npm start command because I'm thinking of developing a docked application. For this below:
2. Running angular application on nginx
2.1. Dockerfile file for nginx
FROM debian:jessie MAINTAINER NGINX Docker Maintainers " docker-maint@nginx.com " ENV NGINX_VERSION 1.11.9-1~jessie RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \ && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ ca-certificates \ nginx=${NGINX_VERSION} \ && rm -rf /var/lib/apt/lists/*
2.2. Nginx configuration below:
server { server_name angular4.dev; root /var/www/frontend/src; try_files $uri $uri/ index.html; error_log /var/log/nginx/angular4_error.log; access_log /var/log/nginx/angular4_access.log; }
2.3. docker-compose.yml
version: '2' services: nginx: build: nginx ports: - 88:80 volumes: - ./nginx/frontend:/var/www/frontend - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ./nginx/logs/nginx/:/var/log/nginx
2.4. docker imaging and container launch
docker-compose up -d
2.5. Container IP Address Identification
docker inspect angular4onnginxwithdocker_nginx_1 | grep IPA #"SecondaryIPAddresses": null, #"IPAddress": "", # "IPAMConfig": null, # "IPAddress": "172.18.0.2",
Open your browser at 172.18.0.2
Problem
I think npm packages are not available ... I'm not sure what exactly is wrong. But I can say that the page is empty and without an error message in the console.
Below is the code obtained when using Nginx
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Angular4 on nginx with docker</title> <base href="/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> </head> <body> <app-root></app-root> </body> </html>
This page code obtained with the npm start command
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Angular4 on nginx with docker</title> <base href="/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> </head> <body> <app-root></app-root> <script type="text/javascript" src="inline.bundle.js"></script><script type="text/javascript" src="polyfills.bundle.js"></script><script type="text/javascript" src="styles.bundle.js"></script><script type="text/javascript" src="vendor.bundle.js"></script><script type="text/javascript" src="main.bundle.js"></script></body> </html>
So what's wrong ???
The repo for this example is available on github