Dockerize your Angular NodeJS application
Using 2 docker containers is the best option in my opinion, single responsibility per container design is worth to follow.
It's very common having to create more than one container per project:
- database
- backend server
- frontend server
One approach is create a folder for docker definitions and for each docker context, create an script docker_build.sh
that prepares the docker context (copy all the artifacts required: libs, source code, etc) and finally make the docker build.
project_root/|----src/|----docker/|----|----angular/|----|----|-----Dockerfile|----|----|-----docker_build.sh|----|----nodejs/|----|----|-----Dockerfile|----|----|-----docker_build.sh
An example of docker_build.sh
#!/bin/bash# create temp directory for buildingmkdir DockerBuildTempPath/# copy files to temp directorycp -arv Dockerfile DockerBuildTempPath/cp -arv ../../src/ DockerBuildTempPath/# ... etccd DockerBuildTempPath#build imagedocker build -t myapp .# remove temp directorycd ..rm -r ./DockerBuildTempPath/
Try jwilder/nginx-proxy(https://github.com/jwilder/nginx-proxy). I'm currently using it to host a main docker Nginx that proxys for all my other docker services.