Hola compañero programador,
Para un proyecto creamos un Angular 2, que será nuestra GUI. Esta GUI obtendrá sus datos de una API de back-end alojada en Amazon Web Services (AWS).
La GUI debería ejecutarse también en AWS, pensamos en ejecutarla como un contenedor Docker en un EC2.
La GUI funciona bien en mi PC, pero no puedo crear un contenedor Docker más probado, que no funcione ni en mi PC ni en AWS.
¿Conocen un buen Proyecto Tutorial / Hello World donde puedo aprender a crear una aplicación Angular 2 en Docker?
Más información sobre cómo estoy tratando de hacer esto:
mi Dockerfile
# Create image based off of the official Node 6 image FROM node:6 # Create a directory where our app will be placed RUN mkdir -p /usr/src/app # Change directory so that our commands run inside this new dir WORKDIR /usr/src/app # Copy dependency definitions COPY package.json /usr/src/app # Install dependecies RUN npm install # Get all the code needed to run the app COPY . /usr/src/app # Expose the port the app runs in EXPOSE 4200 # Serve the app CMD ["npm", "start"] cambiar el package.json
{ ... "scripts": { "start": "ng serve -H 0.0.0.0", ... }, ... } Ejecute docker build -t gui:test .
ejecutar docker run --name gui -p 4200:4200 gui:test
si lo hice correctamente, localhost:4200 debería mostrarme mi aplicación Angluar 2 en ejecución, lo cual no hace.
Editar: La ip dada por el demonio con el puerto tampoco funciona 192.168.99.100:4200
Es más práctico crear una compilación de su proyecto en lugar de usar toda la funcionalidad angular-cli para servir al cliente desde una perspectiva de ancho de banda, separación de preocupaciones y ofuscación.
Por qué:
ng serve es más para un contexto de desarrollo que evita concentrarse en la configuración de un servidor web, un proxy de back-end, etc. durante el desarrollo. Pero además de esa funcionalidad angular-cli también proporciona herramientas de compilación simples.
Crear una compilación:
ng build --prod recopila todas las dependencias y crea una carpeta dist que contiene la aplicación completa.
El contenido de esta carpeta se puede copiar/implementar en un servidor web como Apache , nginx o IIS
Nota al margen:
Cuando su aplicación no se ejecuta en la raíz de su dominio, por ejemplo, www.my.domain.com/subfolder , también es importante especificar el atributo base href para la compilación. p.ej:
ng build --prod --base-href /subfolder/
Luego, su aplicación se ejecutará correctamente en www.my.domain.com/subfolder/ y todos los recursos, como imágenes, etc., se cargarán.